/* ==========================================================================
   Resume4Pro cookie consent
   --------------------------------------------------------------------------
   Deep Navy #001A4E, Electric Blue #0099FF, Fraunces for headings, IBM Plex
   Mono for the small data style labels. Editorial and quiet: a thin sheet of
   paper resting on the page, not a pop up shouting at the visitor.

   Accept all and Reject all use exactly the same class, so they are the same
   size, the same weight and the same colour. That is a legal requirement, not
   a style choice, so please do not restyle one of them on its own.
   ========================================================================== */

.r4p-cc {
    --r4p-navy: #001A4E;
    --r4p-navy-soft: #1a3163;
    --r4p-blue: #0099FF;
    --r4p-ink: #0d1b35;
    --r4p-muted: #5b678a;
    --r4p-line: #e2e6f0;
    --r4p-paper: #ffffff;
    --r4p-tint: #f6f8fc;

    --r4p-serif: 'Fraunces', 'Times New Roman', serif;
    --r4p-mono: 'IBM Plex Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;
    --r4p-sans: 'Sora', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

    font-family: var(--r4p-sans);
    color: var(--r4p-ink);
}

.r4p-cc [hidden] {
    display: none !important;
}

/* --------------------------------------------------------------------------
   Banner
   -------------------------------------------------------------------------- */

.r4p-cc-banner {
    position: fixed;
    z-index: 2147483000;
    inset: auto 0 0 0;
    display: flex;
    justify-content: center;
    padding: 0 16px 16px;
    pointer-events: none;
}

.r4p-cc-banner__inner {
    pointer-events: auto;
    width: 100%;
    max-width: 1080px;
    background: var(--r4p-paper);
    border: 1px solid var(--r4p-line);
    border-top: 3px solid var(--r4p-navy);
    border-radius: 4px;
    box-shadow: 0 24px 60px rgba(0, 26, 78, 0.16);
    padding: 26px 30px;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 28px;
    align-items: center;
    transform: translateY(14px);
    opacity: 0;
    transition: transform 0.32s ease, opacity 0.32s ease;
}

.r4p-cc-banner.is-visible .r4p-cc-banner__inner {
    transform: translateY(0);
    opacity: 1;
}

.r4p-cc-eyebrow {
    font-family: var(--r4p-mono);
    font-size: 10px !important;
    line-height: 1 !important;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--r4p-blue);
    margin: 0 0 10px;
}

.r4p-cc-title {
    font-family: var(--r4p-serif);
    font-optical-sizing: auto;
    font-weight: 500;
    font-size: 21px !important;
    line-height: 1.25;
    letter-spacing: -0.01em;
    color: var(--r4p-navy);
    margin: 0 0 8px;
}

.r4p-cc-text {
    font-size: 14px !important;
    line-height: 1.65 !important;
    color: var(--r4p-muted);
    margin: 0;
    max-width: 62ch;
}

.r4p-cc-text a {
    color: var(--r4p-navy);
    text-decoration: underline;
    text-underline-offset: 2px;
}

.r4p-cc-text a:hover {
    color: var(--r4p-blue);
}

.r4p-cc-banner__actions {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    min-width: 210px;
}

.r4p-cc-banner__choices {
    display: grid;
    grid-template-columns: 1fr 1fr !important;
    gap: 10px; 
}

/* --------------------------------------------------------------------------
   Buttons
   -------------------------------------------------------------------------- */

.r4p-cc-btn {
    -webkit-appearance: none;
    appearance: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 46px;
    padding: 12px 20px;
    border: 1px solid var(--r4p-navy);
    border-radius: 3px;
    background: var(--r4p-navy);
    color: #ffffff;
    font-family: var(--r4p-sans);
    font-size: 13.5px;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0.01em;
    text-align: center;
    cursor: pointer;
    transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.r4p-cc-btn:hover,
.r4p-cc-btn:focus-visible {
    background: var(--r4p-blue);
    border-color: var(--r4p-blue);
    color: #ffffff;
}

.r4p-cc-btn--quiet {
    background: transparent;
    border-color: transparent;
    color: var(--r4p-navy);
    font-weight: 500;
    font-size: 13px;
    min-height: 34px;
    padding: 6px 8px;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.r4p-cc-btn--quiet:hover,
.r4p-cc-btn--quiet:focus-visible {
    background: transparent;
    border-color: transparent;
    color: var(--r4p-blue);
}

.r4p-cc-btn--ghost {
    background: transparent;
    color: var(--r4p-navy);
}

.r4p-cc-btn--ghost:hover,
.r4p-cc-btn--ghost:focus-visible {
    background: var(--r4p-navy);
    color: #ffffff;
    border-color: var(--r4p-navy);
}

.r4p-cc *:focus-visible {
    outline: 2px solid var(--r4p-blue);
    outline-offset: 2px;
}

/* --------------------------------------------------------------------------
   Preferences panel
   -------------------------------------------------------------------------- */

.r4p-cc-panel {
    position: fixed;
    inset: 0;
    z-index: 2147483001;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.r4p-cc-panel__scrim {
    position: absolute;
    inset: 0;
    background: rgba(0, 26, 78, 0.42);
    opacity: 0;
    transition: opacity 0.28s ease;
}

.r4p-cc-panel.is-visible .r4p-cc-panel__scrim {
    opacity: 1;
}

.r4p-cc-panel__dialog {
    position: relative;
    width: 100%;
    max-width: 660px;
    max-height: calc(100vh - 40px);
    display: flex;
    flex-direction: column;
    background: var(--r4p-paper);
    border-radius: 4px;
    border-top: 3px solid var(--r4p-navy);
    box-shadow: 0 40px 90px rgba(0, 26, 78, 0.3);
    transform: translateY(12px) scale(0.99);
    opacity: 0;
    transition: transform 0.28s ease, opacity 0.28s ease;
}

.r4p-cc-panel.is-visible .r4p-cc-panel__dialog {
    transform: translateY(0) scale(1);
    opacity: 1;
}

.r4p-cc-panel__head {
    padding: 26px 30px 20px;
    border-bottom: 1px solid var(--r4p-line);
}

.r4p-cc-panel__close {
    position: absolute;
    top: 16px;
    right: 16px;
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 3px;
    background: transparent;
    color: var(--r4p-muted);
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
}

.r4p-cc-panel__close:hover {
    color: var(--r4p-navy);
    background: var(--r4p-tint);
}

.r4p-cc-panel__body {
    padding: 8px 30px 4px;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

.r4p-cc-panel__foot {
    padding: 18px 30px 24px;
    border-top: 1px solid var(--r4p-line);
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
}

.r4p-cc-panel__foot .r4p-cc-btn {
    width: auto;
    min-width: 150px;
    flex: 1 1 150px;
}

/* --------------------------------------------------------------------------
   Category rows
   -------------------------------------------------------------------------- */

.r4p-cc-group {
    border-bottom: 1px solid var(--r4p-line);
    padding: 22px 0;
}

.r4p-cc-group:last-child {
    border-bottom: 0;
}

.r4p-cc-group__head {
    display: flex;
    gap: 18px;
    align-items: flex-start;
    justify-content: space-between;
}

.r4p-cc-group__label {
    font-family: var(--r4p-mono);
    font-size: 11px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--r4p-navy);
    margin: 0 0 7px;
    font-weight: 600;
}

.r4p-cc-group__desc {
    font-size: 13.5px;
    line-height: 1.6;
    color: var(--r4p-muted);
    margin: 0;
}

.r4p-cc-group__state {
    font-family: var(--r4p-mono);
    font-size: 10px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--r4p-muted);
    white-space: nowrap;
    padding-top: 4px;
}

/* Switch */
.r4p-cc-switch {
    position: relative;
    flex: 0 0 auto;
    width: 46px;
    height: 26px;
    display: inline-block;
}

.r4p-cc-switch input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    opacity: 0;
    cursor: pointer;
}

.r4p-cc-switch__track {
    position: absolute;
    inset: 0;
    border-radius: 26px;
    background: #cfd6e6;
    transition: background 0.2s ease;
    pointer-events: none;
}

.r4p-cc-switch__track::after {
    content: '';
    position: absolute;
    top: 3px;
    left: 3px;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #ffffff;
    box-shadow: 0 1px 3px rgba(0, 26, 78, 0.28);
    transition: transform 0.2s ease;
}

.r4p-cc-switch input:checked + .r4p-cc-switch__track {
    background: var(--r4p-blue);
}

.r4p-cc-switch input:checked + .r4p-cc-switch__track::after {
    transform: translateX(20px);
}

.r4p-cc-switch input:focus-visible + .r4p-cc-switch__track {
    outline: 2px solid var(--r4p-blue);
    outline-offset: 2px;
}

.r4p-cc-switch input:disabled {
    cursor: not-allowed;
}

.r4p-cc-switch input:disabled + .r4p-cc-switch__track {
    background: var(--r4p-navy);
    opacity: 0.32;
}

.r4p-cc-switch input:disabled + .r4p-cc-switch__track::after {
    transform: translateX(20px);
}

/* Cookie table disclosure */
.r4p-cc-disclose {
    margin-top: 14px;
}

.r4p-cc-disclose summary {
    font-family: var(--r4p-mono);
    font-size: 10.5px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--r4p-blue);
    cursor: pointer;
    list-style: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.r4p-cc-disclose summary::-webkit-details-marker {
    display: none;
}

.r4p-cc-disclose summary::after {
    content: '+';
    font-size: 13px;
}

.r4p-cc-disclose[open] summary::after {
    content: '\2212';
}

.r4p-cc-table-wrap {
    margin-top: 12px;
    overflow-x: auto;
    border: 1px solid var(--r4p-line);
    border-radius: 3px;
}

.r4p-cc-table {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--r4p-mono);
    font-size: 11px;
    line-height: 1.55;
}

.r4p-cc-table th {
    text-align: left;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-size: 9.5px;
    color: var(--r4p-navy);
    background: var(--r4p-tint);
    padding: 9px 12px;
    white-space: nowrap;
    border-bottom: 1px solid var(--r4p-line);
}

.r4p-cc-table td {
    padding: 9px 12px;
    color: var(--r4p-muted);
    vertical-align: top;
    border-bottom: 1px solid var(--r4p-line);
}

.r4p-cc-table tr:last-child td {
    border-bottom: 0;
}

.r4p-cc-table td:first-child {
    color: var(--r4p-ink);
    white-space: nowrap;
}

.r4p-cc-table td.r4p-cc-purpose {
    font-family: var(--r4p-sans);
    font-size: 12px;
    min-width: 200px;
}

/* --------------------------------------------------------------------------
   Footer trigger
   -------------------------------------------------------------------------- */

.r4p-cc-footer-link {
    background: none;
    border: 0;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: inherit;
    text-align: left;
}

.r4p-cc-footer-link:hover {
    color: var(--r4p-blue);
}

/* --------------------------------------------------------------------------
   Small screens
   -------------------------------------------------------------------------- */

@media (max-width: 767px) {
    .r4p-cc-banner {
        padding: 0 10px 10px;
    }

    .r4p-cc-banner__inner {
        grid-template-columns: minmax(0, 1fr);
        gap: 10px;
        padding: 11px 10px;
        max-height: 82vh;
        overflow-y: auto;
    }
    .r4p-cc-btn {
        min-height: 28px;
        padding: 8px 16px;
    }

    .r4p-cc-banner__actions {
        min-width: 0;
    }

    .r4p-cc-title {
        font-size: 19px;
    }

    .r4p-cc-panel {
        padding: 0;
        align-items: flex-end;
    }

    .r4p-cc-panel__dialog {
        max-width: none;
        max-height: 92vh;
        border-radius: 4px 4px 0 0;
    }

    .r4p-cc-panel__head,
    .r4p-cc-panel__body,
    .r4p-cc-panel__foot {
        padding-left: 20px;
        padding-right: 20px;
    }

    .r4p-cc-panel__foot .r4p-cc-btn {
        flex: 1 1 100%;
    }
}

@media (max-width: 420px) {
    .r4p-cc-banner__choices {
        grid-template-columns: 1fr;
    }
}

@media (prefers-reduced-motion: reduce) {
    .r4p-cc-banner__inner,
    .r4p-cc-panel__dialog,
    .r4p-cc-panel__scrim,
    .r4p-cc-switch__track,
    .r4p-cc-switch__track::after {
        transition: none;
    }
}

@media print {
    .r4p-cc-banner,
    .r4p-cc-panel {
        display: none !important;
    }
}
