.button {
    border-radius:10px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    min-height:52px;
    padding:14px 24px;
    color:var(--navy);
    background:linear-gradient(180deg,var(--yellow-bright),var(--yellow));
    border:1px solid var(--amber);
    text-decoration:none;
    font-weight:750;
    font-size:15px;
    line-height:1.4;
    box-shadow:0 2px 0 #082b4c22;
    transition:transform 140ms ease,background 140ms ease,box-shadow 140ms ease,filter 140ms ease;
}
@media(hover:hover) and (pointer:fine) {
    .button:hover {
        filter:brightness(1.04);
        box-shadow:0 3px 0 var(--navy);
        text-decoration:none;
    }
}
.button:active {
    transform:scale(.98);
}
.button .icon {
    width:20px;
    height:20px;
}
.button-email {
    background:var(--white);
    border-color:var(--line);
    font-weight:650;
    font-size:14px;
    box-shadow:none;
}
@media(hover:hover) and (pointer:fine) {
    .button-email:hover {
        background:#fff8e8;
        border-color:#e2c36a;
        box-shadow:none;
        filter:none;
    }
}
.hero-actions {
    display:flex;
    flex-wrap:wrap;
    gap:12px;
    margin-top:28px;
}
.hero-actions .button {
    width:100%;
}
.hero-actions .button-email {
    padding-inline:12px;
}
.measuring-rule {
    height:13px;
    background:repeating-linear-gradient(90deg,var(--navy) 0 1px,transparent 1px 12px) bottom/100% 5px no-repeat,repeating-linear-gradient(90deg,var(--navy) 0 1px,transparent 1px 60px) bottom/100% 9px no-repeat,var(--yellow);
}
.service-grid {
    display:grid;
    grid-template-columns:1fr;
    counter-reset:service;
    column-gap:36px;
}
.service-card {
    position:relative;
    display:flex;
    flex-direction:column;
    gap:8px;
    min-width:0;
    padding:18px 0 20px;
    border-top:1px solid #cfd0c8;
    text-decoration:none;
    counter-increment:service;
}
.service-card:not(.service-card-live) .service-card-top {
    min-height:0;
}
.service-card:not(.service-card-live) h3 {
    font-size:17px;
}
.service-card-top {
    display:flex;
    align-items:center;
    justify-content:space-between;
    min-height:25px;
}
.service-number {
    font:550 13px/1 var(--heading);
    letter-spacing:.06em;
    color:#6a7380;
}
.service-number::before {
    content:counter(service,decimal-leading-zero);
}
.service-card h3 {
    max-width:22ch;
}
.service-card p {
    font-size:14px;
    line-height:1.75;
    color:var(--muted);
}
.service-card-live {
    border-radius:var(--radius-card);
    gap:14px;
    padding:24px 24px 26px;
    margin-block:6px;
    border-top:0;
    background:var(--navy);
    color:var(--white);
    transition:transform 150ms ease,box-shadow 150ms ease;
}
.service-card-live h3,.service-card-live p {
    color:var(--white);
}
.service-card-live .service-number {
    color:#c2c8d3;
}
.service-card-live .icon {
    color:var(--yellow);
    width:22px;
    height:22px;
}
@media(hover:hover) and (pointer:fine) {
    .service-card-live:hover {
        transform:translateY(-3px);
        box-shadow:0 8px 0 var(--yellow);
        z-index:1;
        text-decoration:none;
    }
}
.service-card-live h3 {
    text-decoration:underline;
    text-underline-offset:5px;
    text-decoration-color:#bcc3d2;
    text-decoration-thickness:1px;
}
.service-card-live:active {
    transform:scale(.98);
}
.faq-section {
    background:var(--paper);
}
.faq-layout {
    display:grid;
    gap:32px;
}
.faq-list {
    border-top:1px solid var(--line);
}
.faq-item {
    border-bottom:1px solid var(--line);
    overflow:hidden;
    background:var(--white);
}
.faq-item summary {
    list-style:none;
    padding:24px 4px;
    min-height:80px;
}
.faq-item summary::-webkit-details-marker {
    display:none;
}
.faq-item summary h3 {
    display:flex;
    align-items:center;
    gap:16px;
    font-size:17px;
    font-weight:650;
    line-height:1.5;
}
.faq-question {
    flex:1;
    min-width:0;
}
.faq-number {
    font:500 13px var(--heading);
    color:var(--muted);
}
.faq-number::before {
    content:attr(data-number);
}
.faq-plus {
    border-radius:8px;
    display:grid;
    place-items:center;
    width:32px;
    height:32px;
    background:var(--paper);
    border:1px solid var(--line);
    flex:none;
}
.faq-plus .icon {
    width:19px;
    height:19px;
}
.plus-vertical {
    transform-origin:center;
    transition:transform 180ms var(--ease);
}
.faq-item[open] .plus-vertical {
    transform:scaleY(0);
}
.faq-item[data-expanded="false"] .plus-vertical {
    transform:scaleY(1);
}
.faq-answer {
    padding:0 12px 26px 32px;
    color:var(--muted);
    font-size:15px;
    line-height:1.8;
}
.faq-item summary:focus-visible {
    outline:3px solid var(--navy);
    outline-offset:-3px;
    box-shadow:none;
}
.faq-plus {
    transition:background 140ms ease;
}
@media(hover:hover) and (pointer:fine) {
    .faq-item summary:hover .faq-plus {
        background:var(--yellow);
    }
}
@media(max-width:359px) {
    .faq-item summary h3 {
        font-size:16px;
    }
}
.cta-section {
    padding-block:var(--section-y);
    background:var(--paper);
}
.cta-panel {
    overflow:hidden;
    border-radius:24px;
    padding:var(--panel-pad);
    background:
        radial-gradient(500px 240px at 100% 0%,#f5b30144,transparent 55%),
        linear-gradient(145deg,var(--navy-soft),var(--navy-dark));
    color:var(--white);
    position:relative;
    box-shadow:var(--shadow);
}
.cta-panel h2 {
    color:var(--white);
    max-width:680px;
}
.cta-lead {
    margin-top:28px;
    font-size:17px;
}
.cta-phone {
    margin-top:9px;
}
.contact-label {
    display:block;
    font-size:13px;
    color:#c8cfda;
}
.cta-phone a {
    display:inline-block;
    padding-block:4px;
    font-family:var(--heading);
    font-size:clamp(2rem,8.8vw,5.8rem);
    line-height:1.25;
    letter-spacing:-.02em;
    font-weight:720;
    text-decoration:none;
    border-bottom:2px solid var(--yellow);
    white-space:nowrap;
}
@media(hover:hover) and (pointer:fine) {
    .cta-phone a:hover {
        color:#ffe29a;
    }
}
.contact-details {
    display:grid;
    gap:22px;
    margin-top:34px;
}
.contact-details>div {
    display:grid;
    align-content:start;
    gap:6px;
}
.contact-details dt {
    display:flex;
    align-items:center;
    gap:9px;
    font-size:13px;
    font-weight:600;
    color:#c8cfda;
}
.contact-details .icon {
    width:15px;
    height:15px;
}
.contact-details dd {
    margin:0;
    font-size:14px;
}
.cta-closing {
    margin-top:30px;
    padding-top:24px;
    border-top:1px solid #526079;
    font-size:14px;
    color:#e3e6ed;
}
.service-cta-copy {
    max-width:820px;
    margin-top:25px;
    font-size:18px;
}
.cta-panel .hero-actions .button-email {
    color:var(--white);
    border-color:#56637c;
}
@media(hover:hover) and (pointer:fine) {
    .cta-panel .hero-actions .button-email:hover {
        background:#ffffff14;
    }
}
.service-cta-copy p+p {
    font-size:14px;
    color:#d8deea;
}
@media(min-width:540px) {
    .service-grid {
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .service-card-live {
        margin-block:0 6px;
    }
    .hero-actions .button {
        width:auto;
    }
    .hero-actions .button-email {
        padding-inline:18px;
    }
}
@media(min-width:768px) {
    .service-card-live {
        padding:28px;
    }
    .service-card-live h3 {
        font-size:19px;
    }
    .faq-layout {
        grid-template-columns:.8fr 1.5fr;
        gap:60px;
    }
    .faq-layout>h2 {
        max-width:16ch;
        align-self:start;
        position:sticky;
        top:136px;
    }
    .faq-item summary h3 {
        gap:20px;
    }
    .faq-item summary h3 {
        font-size:18px;
    }
    .faq-answer {
        padding-left:38px;
        font-size:16px;
    }
    .contact-details {
        grid-template-columns:1.25fr 1fr 1.2fr;
        gap:28px;
    }
    .service-cta-copy {
        font-size:21px;
    }
}
@media(min-width:1100px) {
    .service-grid {
        grid-template-columns:repeat(4,minmax(0,1fr));
    }
    .faq-layout {
        grid-template-columns:1fr 1.65fr;
        gap:100px;
    }
    .cta-lead {
        font-size:20px;
    }
}
.service-card-live h3 a::after {
    content:"";
    position:absolute;
    inset:0;
}
.service-card-live:has(a:focus-visible) {
    outline:3px solid var(--yellow);
    outline-offset:4px;
    box-shadow:0 0 0 6px var(--navy);
}
.service-card-live h3 a:focus-visible {
    outline:none;
    box-shadow:none;
}

.hero-prose {
    margin-top:26px;
    font-size:15px;
    line-height:1.8;
}
.hero-prose p:first-child {
    font-size:16px;
    color:var(--navy);
}
@media(min-width:768px) {
    .hero-prose {
        font-size:16px;
        max-width:730px;
    }
    .hero-prose p:first-child {
        font-size:17px;
    }
}
@media(min-width:1100px) {
    .hero-prose {
        margin-top:30px;
    }
}

@media screen and (prefers-reduced-motion:no-preference) {
    [data-reveal].reveal-pending {
        opacity:0;
        transform:translateY(22px) scale(.985);
    }
    [data-reveal].reveal-active {
        transition:opacity 620ms var(--ease) var(--reveal-delay,0ms),transform 620ms var(--ease) var(--reveal-delay,0ms);
    }
    .job-docket .tick-stroke {
        stroke-dasharray:28;
        stroke-dashoffset:28;
        animation:tick-draw 520ms var(--ease) calc(180ms + var(--tick-delay,0ms)) forwards;
    }
    .services-menu[open]:not([data-state]) .services-dropdown {
        animation:menu-open 220ms var(--ease);
    }
}
.reveal-pending .tick-stroke {
    animation-play-state:paused;
}
@keyframes tick-draw {
    to {
        stroke-dashoffset:0;
    }
}
@keyframes menu-open {
    from {
        clip-path:inset(0 0 100% 100%);
        transform:scale(.96);
    }
    to {
        clip-path:inset(0);
        transform:scale(1);
    }
}
@media(prefers-reduced-motion:reduce) {
    *,*::before,*::after {
        animation:none!important;
        transition:none!important;
        scroll-behavior:auto!important;
    }
    [data-reveal] {
        opacity:1!important;
        transform:none!important;
    }
    .tick-stroke {
        stroke-dashoffset:0!important;
    }
}
@media print {
    [data-reveal] {
        opacity:1!important;
        transform:none!important;
        transition:none!important;
    }
    .faq-item {
        height:auto!important;
        overflow:visible!important;
    }
    .faq-item::details-content {
        content-visibility:visible!important;
        display:block!important;
        height:auto!important;
    }
    .faq-answer {
        display:block!important;
    }
    .job-docket .tick-stroke {
        stroke-dashoffset:0!important;
    }
}

/* —— Quote form (home + quote page) —— */
.quote-form {
    position:relative;
    display:grid;
    gap:12px;
    padding:24px;
    background:var(--white);
    color:var(--ink);
    border-top:3px solid var(--yellow);
    box-shadow:var(--shadow);
}
.quote-form-title {
    font-family:var(--heading);
    font-size:1.15rem;
    font-weight:720;
    color:var(--navy);
    margin:0;
}
.quote-form-lead {
    margin:0 0 4px;
    font-size:14px;
    color:var(--muted);
    line-height:1.45;
}
.quote-form-grid {
    display:grid;
    gap:12px;
}
@media(min-width:560px) {
    .quote-form-grid {
        grid-template-columns:1fr 1fr;
    }
    .quote-span-2 {
        grid-column:1 / -1;
    }
}
.quote-form label {
    display:grid;
    gap:6px;
    font-size:13px;
    font-weight:650;
    color:var(--navy);
}
.quote-form input,
.quote-form select,
.quote-form textarea {
    width:100%;
    min-height:48px;
    padding:10px 12px;
    border:1px solid var(--line);
    border-radius:8px;
    background:var(--paper);
    color:var(--ink);
    font:inherit;
}
.quote-form textarea {
    min-height:110px;
    resize:vertical;
}
.quote-form input[type="file"] {
    min-height:0;
    padding:10px;
    background:var(--white);
}
.quote-optional {
    font-weight:500;
    color:var(--muted);
}
.quote-hint {
    font-size:12px;
    font-weight:500;
    color:var(--muted);
}
.quote-consent {
    display:flex!important;
    align-items:flex-start;
    gap:10px;
    font-weight:500!important;
    color:var(--muted)!important;
    grid-template-columns:none;
}
.quote-consent input {
    width:18px;
    height:18px;
    min-height:18px;
    margin-top:3px;
    flex:none;
}
.quote-form .button {
    margin-top:6px;
    width:100%;
}
.quote-form-fine {
    margin:0;
    font-size:12.5px;
    color:var(--muted);
    text-align:center;
}
.quote-hp {
    position:absolute;
    left:-9999px;
    width:1px;
    height:1px;
    overflow:hidden;
}
.quote-alert {
    padding:12px 14px;
    margin-bottom:12px;
    border-radius:8px;
    font-size:14px;
    font-weight:600;
}
.quote-alert-success {
    background:#e8f6ee;
    color:#0f5132;
    border:1px solid #b7e0c5;
}
.quote-alert-error {
    background:#fdebec;
    color:#842029;
    border:1px solid #f1c0c5;
}

.quote-page .quote-hero {
    padding:32px 0 48px;
    background:
        radial-gradient(ellipse 80% 60% at 10% 0%, rgba(242, 196, 58, .18), transparent 55%),
        linear-gradient(180deg, #f3f6fa 0%, var(--paper, #f7f8fa) 100%);
}
.quote-hero-grid {
    display:grid;
    gap:28px;
    align-items:start;
}
@media(min-width:900px) {
    .quote-hero-grid {
        grid-template-columns:minmax(0,1fr) minmax(320px,.95fr);
        gap:40px;
    }
}
.quote-hero-lead {
    font-size:1.05rem;
    line-height:1.55;
    color:var(--ink);
    max-width:36rem;
}
.quote-hero-note {
    color:var(--muted);
    font-size:14px;
}
.quote-hero-form .quote-form {
    position:relative;
}
.quote-step-list {
    list-style:none;
    margin:0;
    padding:0;
    display:grid;
    gap:16px;
}
@media(min-width:700px) {
    .quote-step-list {
        grid-template-columns:repeat(3,1fr);
        gap:20px;
    }
}
.quote-step-list li {
    display:grid;
    gap:10px;
    padding:20px;
    background:var(--white);
    border:1px solid var(--line);
    border-radius:12px;
}
.quote-step-num {
    font-family:var(--heading);
    font-weight:760;
    color:var(--yellow);
    font-size:1.1rem;
}
.quote-step-list h3 {
    margin:0 0 6px;
    font-size:1.05rem;
    color:var(--navy);
}
.quote-step-list p {
    margin:0;
    color:var(--muted);
    font-size:14px;
    line-height:1.5;
}
.quote-tips-shell {
    padding:24px;
    background:var(--navy);
    color:var(--white);
    border-radius:12px;
}
.quote-tips-shell h2 {
    margin:0 0 14px;
    color:var(--white);
    font-size:1.2rem;
}
.quote-tips-shell ul {
    list-style:none;
    margin:0;
    padding:0;
    display:grid;
    gap:10px;
}
.quote-tips-shell li {
    display:flex;
    gap:10px;
    align-items:flex-start;
    font-size:14.5px;
    line-height:1.45;
}
.quote-tips-shell li svg {
    flex:none;
    margin-top:2px;
    color:var(--yellow);
}

.page-enter main,.page-enter .site-footer {
    animation:page-enter 380ms cubic-bezier(.2,.7,.2,1) both;
}
@keyframes page-enter {
    from { opacity:0; transform:translateY(16px); }
}
.card-ghost {
    position:fixed;
    z-index:40;
    background:var(--navy);
    border-radius:var(--radius-card);
    transform-origin:0 0;
    pointer-events:none;
}
@media(prefers-reduced-motion:reduce) {
    .page-enter main,.page-enter .site-footer {
        animation:none;
    }
    .card-ghost {
        display:none;
    }
}
