/* ==========================================
   GLOBAL RESET
========================================== */

*,
*::before,
*::after{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

html{
    scroll-behavior:smooth;
}

body{

    background:var(--color-background);

    color:var(--color-text);

    font-family:var(--font-body);

    line-height:1.7;

    overflow-x:hidden;
}

img{

    max-width:100%;

    display:block;

    /* Best-effort deterrent against casual right-click/drag saving.
       Can't block dev tools, view-source, or the network panel --
       see the matching contextmenu/dragstart guards in js/app.js. */
    -webkit-user-select:none;
    -moz-user-select:none;
    user-select:none;
    -webkit-user-drag:none;
    user-drag:none;
    -khtml-user-drag:none;
    -moz-user-drag:none;
    -o-user-drag:none;
}

a{

    text-decoration:none;

    color:inherit;
}

ul{

    list-style:none;
}

button{

    font:inherit;

    cursor:pointer;

    border:none;

    background:none;
}
/* ==========================================
   LAYOUT
========================================== */

.container{

    width:min(
        var(--container-width),
        calc(100% - 3rem)
    );

    margin-inline:auto;
}
/* ==========================================
   BUTTONS
========================================== */

.btn{

    display:inline-flex;

    align-items:center;

    justify-content:center;

    text-decoration:none;

    cursor:pointer;

    transition:.3s ease;

}

.btn--primary{

    background:var(--color-gold);

    color:var(--color-background);

    border:2px solid var(--color-gold);

    padding:18px 36px;

    border-radius:999px;

    font-weight:700;

    font-size:1.1rem;

    min-width:300px;

    text-align:center;

    box-shadow:0 10px 30px rgba(216,177,75,.35);

}

.btn--primary:hover{

    background:var(--color-gold-hover);

    border-color:var(--color-gold-hover);

    transform:translateY(-2px);

    box-shadow:0 14px 36px rgba(216,177,75,.45);

}

.btn:disabled{

    opacity:.6;

    cursor:not-allowed;

    transform:none;

}
.btn--secondary{

    border:2px solid var(--color-gold);

    background:transparent;

    color:var(--color-gold);

    padding:14px 28px;

    border-radius:999px;

    font-weight:700;

    min-width:260px;

    text-align:center;

}

.btn--secondary:hover{

    background:var(--color-gold);

    color:var(--color-background);

}
/* .btn--primary/--secondary's min-width (300px/260px) is fine in
   most containers, but a handful of narrower cards/columns
   sitewide (e.g. .op-hero__card) leave less room than that even
   at the container's full width — on phones that forced the
   button wider than its own parent. Letting buttons go full-width
   below where a single one would already dominate a hero/CTA row
   sidesteps every such case at once instead of patching each
   narrow container individually. */
@media (max-width:420px){

    .btn--primary,
    .btn--secondary{

        min-width:0;

        width:100%;

    }

}
/* ==========================================
   SHARED EYEBROW LABEL
========================================== */

.eyebrow{

    display:inline-block;

    color:var(--color-gold);

    letter-spacing:2px;

    font-size:var(--fs-sm);

    font-weight:700;

    margin-bottom:20px;

    text-transform:uppercase;

}
.eyebrow--lg{

    font-size:1.15rem;

}
.section-light .eyebrow{

    color:var(--color-gold);

}
/* ==========================================
   DISCOVERY CALL BOOKING MODAL
   Shared across every page (injected by js/app.js
   and triggered by any `href="#contact"` CTA).
   Light card intentionally breaks from the dark
   site theme — a long form reads best on white —
   while reusing the site's navy/gold/serif system.
========================================== */

.dc-modal{

    display:none;

    position:fixed;

    inset:0;

    z-index:2000;

    align-items:center;

    justify-content:center;

    padding:24px;

}

.dc-modal.is-open{

    display:flex;

}

body.dc-lock-scroll{

    overflow:hidden;

}

.dc-modal__backdrop{

    position:absolute;

    inset:0;

    background:rgba(8,21,45,.75);

    backdrop-filter:blur(4px);

}

.dc-modal__dialog{

    position:relative;

    width:min(880px, 100%);

    max-height:min(880px, 90vh);

    background:#ffffff;

    border-radius:var(--radius-lg);

    box-shadow:0 30px 80px rgba(0,0,0,.45);

    display:flex;

    flex-direction:column;

    overflow:hidden;

    animation:dcDialogIn .25s ease;

}

@keyframes dcDialogIn{

    from{
        opacity:0;
        transform:translateY(16px) scale(.98);
    }

    to{
        opacity:1;
        transform:translateY(0) scale(1);
    }

}

.dc-modal__close{

    position:absolute;

    top:18px;

    right:18px;

    width:36px;

    height:36px;

    border-radius:50%;

    display:flex;

    align-items:center;

    justify-content:center;

    background:rgba(11,29,58,.06);

    color:#0B1D3A;

    font-size:1.5rem;

    line-height:1;

    z-index:2;

    transition:var(--transition);

}

.dc-modal__close:hover{

    background:rgba(11,29,58,.12);

}

.dc-modal__scroll{

    overflow-y:auto;

    padding:48px 48px 32px;

}

.dc-modal__header{

    text-align:center;

    margin-bottom:36px;

}

.dc-modal__header h2{

    font-family:var(--font-heading);

    font-weight:700;

    font-size:var(--fs-xl);

    color:#0B1D3A;

    margin-bottom:14px;

}

.dc-modal__header p{

    color:#5B6472;

    max-width:520px;

    margin-inline:auto;

}

.dc-section{

    margin-bottom:32px;

}

.dc-section__head{

    display:flex;

    align-items:center;

    gap:10px;

    padding-bottom:14px;

    margin-bottom:22px;

    border-bottom:1px solid rgba(11,29,58,.1);

}

.dc-section__icon{

    display:flex;

    color:var(--color-gold);

}

.dc-section__icon svg{

    width:22px;

    height:22px;

}

.dc-section__head h3{

    font-family:var(--font-heading);

    font-weight:700;

    font-size:var(--fs-lg);

    color:#0B1D3A;

}

.dc-grid-2{

    display:grid;

    grid-template-columns:1fr 1fr;

    gap:20px;

}

.dc-field{

    display:flex;

    flex-direction:column;

    gap:8px;

    margin-bottom:20px;

}

/* .dc-field sets its own `display`, which otherwise beats the browser's
   default `[hidden]{display:none}` UA rule — without this, a hidden
   .dc-field (e.g. the "Other" industry field) stays visible. */
.dc-field[hidden]{

    display:none;

}

.dc-field:last-child{

    margin-bottom:0;

}

.dc-field label,
.dc-field__label{

    font-size:var(--fs-xs);

    font-weight:700;

    color:#0B1D3A;

}

.dc-required{

    color:var(--color-gold);

}

.dc-field input,
.dc-field select,
.dc-field textarea{

    width:100%;

    font-family:var(--font-body);

    font-size:var(--fs-sm);

    color:#0B1D3A;

    background:#ffffff;

    border:1px solid rgba(11,29,58,.15);

    border-radius:var(--radius-sm);

    padding:14px 16px;

    transition:var(--transition);

}

.dc-field textarea{

    resize:vertical;

    min-height:90px;

    font-family:inherit;

}

.dc-field input::placeholder,
.dc-field textarea::placeholder{

    color:#9AA3B0;

}

.dc-field input:focus,
.dc-field select:focus,
.dc-field textarea:focus{

    outline:none;

    border-color:var(--color-gold);

    box-shadow:0 0 0 3px rgba(216,177,75,.2);

}

.dc-field input.is-invalid,
.dc-field input.is-invalid:focus{

    border-color:#B3261E;

    box-shadow:0 0 0 3px rgba(179,38,30,.2);

}

/* Light-blue "accepted" state — applied once a required field holds a
   valid value, checked on blur (same trigger as the invalid state). */
.dc-field input.is-valid,
.dc-field input.is-valid:focus{

    border-color:#8EB8F5;

    background:#EEF4FE;

    box-shadow:0 0 0 3px rgba(59,130,246,.16);

}

.dc-field__error{

    display:block;

    color:#B3261E;

    font-size:.75rem;

    font-weight:600;

}

.dc-field__error[hidden]{

    display:none;

}

.dc-field select{

    appearance:none;

    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230B1D3A' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");

    background-repeat:no-repeat;

    background-position:right 14px center;

    background-size:18px;

    padding-right:44px;

}

.dc-checkbox-grid{

    display:grid;

    grid-template-columns:repeat(3, 1fr);

    gap:12px;

}

.dc-checkbox{

    display:flex;

    align-items:center;

    gap:10px;

    border:1px solid rgba(11,29,58,.15);

    border-radius:var(--radius-sm);

    padding:12px 14px;

    font-size:var(--fs-xs);

    font-weight:600;

    color:#0B1D3A;

    cursor:pointer;

    transition:var(--transition);

}

.dc-checkbox:hover{

    border-color:rgba(216,177,75,.6);

}

.dc-checkbox input{

    position:absolute;

    opacity:0;

    width:0;

    height:0;

}

.dc-checkbox__box{

    flex:none;

    width:16px;

    height:16px;

    border:1px solid rgba(11,29,58,.3);

    border-radius:4px;

    display:flex;

    align-items:center;

    justify-content:center;

    transition:var(--transition);

}

.dc-checkbox__box::after{

    content:"";

    width:9px;

    height:9px;

    border-radius:2px;

    background:var(--color-gold);

    transform:scale(0);

    transition:var(--transition);

}

.dc-checkbox.is-checked{

    border-color:var(--color-gold);

    background:rgba(216,177,75,.08);

}

.dc-checkbox.is-checked .dc-checkbox__box{

    border-color:var(--color-gold);

}

.dc-checkbox.is-checked .dc-checkbox__box::after{

    transform:scale(1);

}

.dc-scheduler__tz{

    font-size:var(--fs-xs);

    color:#9AA3B0;

    margin-bottom:14px;

}

.dc-scheduler__status{

    display:block;

    font-size:var(--fs-xs);

    color:#5B6472;

    background:#F7F8FA;

    border:1px solid rgba(11,29,58,.08);

    border-radius:var(--radius-sm);

    padding:12px 16px;

    margin-bottom:14px;

}

.dc-scheduler__status[hidden]{

    display:none;

}

.dc-scheduler__status a{

    color:var(--color-gold);

    text-decoration:underline;

}

.dc-scheduler__retry{

    color:var(--color-gold);

    font-weight:700;

    text-decoration:underline;

    cursor:pointer;

}

.dc-scheduler{

    display:grid;

    grid-template-columns:1fr 1fr;

    gap:24px;

    background:#F7F8FA;

    border:1px solid rgba(11,29,58,.08);

    border-radius:var(--radius-md);

    padding:22px;

    transition:opacity .2s ease;

}

.dc-scheduler--loading{

    opacity:.55;

    pointer-events:none;

}

.dc-calendar__nav{

    display:flex;

    align-items:center;

    justify-content:space-between;

    margin-bottom:16px;

}

.dc-calendar__month{

    font-weight:700;

    color:#0B1D3A;

}

.dc-calendar__arrow{

    width:28px;

    height:28px;

    border-radius:50%;

    display:flex;

    align-items:center;

    justify-content:center;

    color:#0B1D3A;

    font-size:1.1rem;

    transition:var(--transition);

}

.dc-calendar__arrow:hover{

    background:rgba(11,29,58,.08);

}

.dc-calendar__arrow:disabled{

    opacity:.3;

    cursor:default;

}

.dc-calendar__weekdays,
.dc-calendar__days{

    display:grid;

    grid-template-columns:repeat(7, 1fr);

    gap:4px;

}

.dc-calendar__weekdays span{

    text-align:center;

    font-size:.75rem;

    font-weight:700;

    color:#9AA3B0;

    padding-bottom:8px;

}

.dc-calendar__day{

    aspect-ratio:1;

    display:flex;

    align-items:center;

    justify-content:center;

    border-radius:50%;

    font-size:var(--fs-xs);

    color:#0B1D3A;

    transition:var(--transition);

}

.dc-calendar__day:not(:disabled):hover{

    background:rgba(216,177,75,.18);

}

.dc-calendar__day:disabled{

    color:#C7CCD4;

    cursor:default;

}

.dc-calendar__day--empty{

    visibility:hidden;

}

.dc-calendar__day--today{

    box-shadow:inset 0 0 0 1px var(--color-gold);

}

.dc-calendar__day.is-selected{

    background:var(--color-gold);

    color:#0B1D3A;

    font-weight:700;

}

.dc-timeslots__date{

    display:block;

    font-weight:700;

    color:#0B1D3A;

    margin-bottom:16px;

}

.dc-timeslots__grid{

    display:grid;

    grid-template-columns:1fr 1fr;

    gap:10px;

}

.dc-timeslots__slot{

    background:#ffffff;

    border:1px solid rgba(11,29,58,.15);

    border-radius:var(--radius-sm);

    padding:12px;

    font-size:var(--fs-xs);

    font-weight:600;

    color:#0B1D3A;

    text-align:center;

    transition:var(--transition);

}

.dc-timeslots__slot:hover{

    border-color:rgba(216,177,75,.6);

}

.dc-timeslots__slot.is-selected{

    border-color:var(--color-gold);

    background:rgba(216,177,75,.12);

    box-shadow:0 0 0 2px rgba(216,177,75,.35);

}

.dc-timeslots__empty{

    color:#9AA3B0;

    font-size:var(--fs-xs);

}

.dc-form__error{

    color:#B3261E;

    background:rgba(179,38,30,.08);

    border:1px solid rgba(179,38,30,.25);

    border-radius:var(--radius-sm);

    padding:12px 16px;

    font-size:var(--fs-xs);

    font-weight:600;

    margin-bottom:20px;

}

.dc-form__footer{

    display:flex;

    justify-content:flex-end;

    padding-top:24px;

    border-top:1px solid rgba(11,29,58,.1);

}

.dc-submit{

    min-width:220px;

    padding:16px 32px;

}

.dc-success{

    text-align:center;

    padding:40px 20px 8px;

}

.dc-success__icon{

    width:64px;

    height:64px;

    margin:0 auto 20px;

    border-radius:50%;

    background:rgba(216,177,75,.15);

    color:var(--color-gold);

    display:flex;

    align-items:center;

    justify-content:center;

    font-size:1.8rem;

    font-weight:700;

}

.dc-success h3{

    font-family:var(--font-heading);

    font-weight:700;

    font-size:var(--fs-xl);

    color:#0B1D3A;

    margin-bottom:12px;

}

.dc-success p{

    color:#5B6472;

    max-width:560px;

    margin:0 auto 28px;

}

@media (max-width: 720px){

    .dc-modal{
        padding:0;
    }

    .dc-modal__dialog{
        max-height:100vh;
        height:100%;
        border-radius:0;
    }

    .dc-modal__scroll{
        padding:40px 20px 24px;
    }

    .dc-grid-2,
    .dc-checkbox-grid,
    .dc-scheduler,
    .dc-timeslots__grid{
        grid-template-columns:1fr;
    }

    .dc-form__footer{
        justify-content:stretch;
    }

    .dc-submit{
        width:100%;
    }

}
