/* ==========================================================================
   NashvilleChords consent notice — visual layer
   --------------------------------------------------------------------------
   This is a restyle ONLY. Every class name, id and DOM relationship the rest
   of the site depends on is untouched:

     .gdpr-cookie-notice-settings-button          (privacy.php, 5 x)
     .gdpr-cookie-notice-nav-item-accept
     .gdpr-cookie-notice-nav-item-decline         (reject all, one click)
     .gdpr-cookie-notice-modal-footer-item-save   (privacy.php analytics opt-out)
     #gdpr-cookie-notice-cookie_performance/_analytics/_marketing
     html.gdpr-cookie-notice-show-modal           (privacy.php analytics opt-out)
     html.gdpr-cookie-notice-loaded               (script.js show/hide switch)

   Design language: privacy.php / app/css/main.css / the "Stage Card" email.
   Outfit is SELF-HOSTED from /fonts/ — the notice must never hand a visitor's
   IP address to a third party before they have consented to anything, so this
   file loads no external asset of any kind (no CDN, no Google Fonts, no
   remote images; the two SVGs below are inline data: URIs).
   ========================================================================== */

/* ---------- Outfit, self-hosted, same-origin ---------------------------- */
/* Root-relative on purpose: the notice renders on /, /app/, /qdl/,
   /impressum.php and /privacy.php, so a path relative to this stylesheet
   would break outside the site root. Same family name and same two files
   privacy.php already uses, so on that page nothing extra is fetched.       */

/* latin-ext */
@font-face{
    font-family:'Outfit';
    font-style:normal;
    font-weight:400;
    font-display:swap;
    src:url('/fonts/outfit-latin-ext.woff2') format('woff2');
    unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face{
    font-family:'Outfit';
    font-style:normal;
    font-weight:400;
    font-display:swap;
    src:url('/fonts/outfit-latin.woff2') format('woff2');
    unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face{
    font-family:'Outfit';
    font-style:normal;
    font-weight:500;
    font-display:swap;
    src:url('/fonts/outfit-latin-ext.woff2') format('woff2');
    unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face{
    font-family:'Outfit';
    font-style:normal;
    font-weight:500;
    font-display:swap;
    src:url('/fonts/outfit-latin.woff2') format('woff2');
    unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face{
    font-family:'Outfit';
    font-style:normal;
    font-weight:600;
    font-display:swap;
    src:url('/fonts/outfit-latin-ext.woff2') format('woff2');
    unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face{
    font-family:'Outfit';
    font-style:normal;
    font-weight:600;
    font-display:swap;
    src:url('/fonts/outfit-latin.woff2') format('woff2');
    unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ---------- tokens ------------------------------------------------------ */
/* Scoped to the two widget roots rather than :root, so nothing here can
   leak into the host page (the app ships Bootstrap, the start page Gumby). */
.gdpr-cookie-notice,
.gdpr-cookie-notice-modal{
    --nvc-ground:#0C0C0C;
    --nvc-surface:linear-gradient(165deg, rgba(34,34,34,.95) 0%, rgba(12,12,12,.98) 100%);
    --nvc-surface-raised:linear-gradient(165deg, rgba(44,44,44,.96) 0%, rgba(18,18,18,.98) 100%);
    --nvc-hairline:rgba(255,255,255,0.14);
    --nvc-hairline-soft:rgba(255,255,255,0.08);
    --nvc-ink:#F5F5F5;          /* 14.6:1 on #222 */
    --nvc-body:#D7D7D7;         /* 11.1:1 on #222 */
    --nvc-quiet:#B9B9B9;        /*  8.1:1 on #222 */
    --nvc-amber-1:#FFD9A3;
    --nvc-amber-2:#F2B866;
    --nvc-amber-ink:#221605;    /* 10.0:1 on #F2B866 */
    --nvc-gold:#C89B50;
    --nvc-link:#FFDCA0;         /* 12.1:1 on #222 */
    --nvc-font:'Outfit', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Helvetica, Arial, sans-serif;
    --nvc-ease:cubic-bezier(.22,.8,.24,1);
}

/* Bootstrap / Gumby live on these pages. Neutralise anything they would
   otherwise push into the widget's own boxes. */
.gdpr-cookie-notice,
.gdpr-cookie-notice *,
.gdpr-cookie-notice *::before,
.gdpr-cookie-notice *::after,
.gdpr-cookie-notice-modal,
.gdpr-cookie-notice-modal *,
.gdpr-cookie-notice-modal *::before,
.gdpr-cookie-notice-modal *::after{
    box-sizing:border-box;
}

/* ==========================================================================
   THE BAR
   ========================================================================== */
.gdpr-cookie-notice{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:10000000;

    display:flex;
    align-items:center;
    gap:22px;

    width:auto;
    max-width:1060px;
    margin:0 auto;
    /* keep clear of iOS home indicator / Android gesture bar */
    margin-bottom:calc(18px + env(safe-area-inset-bottom, 0px));
    margin-left:max(18px, env(safe-area-inset-left, 0px));
    margin-right:max(18px, env(safe-area-inset-right, 0px));

    padding:20px 24px;
    border:1px solid var(--nvc-hairline);
    border-radius:18px;
    background:var(--nvc-surface);
    background-color:#141414; /* opaque floor: never let page content read through */
    box-shadow:
        0 1px 0 rgba(255,255,255,.06) inset,
        0 20px 48px rgba(0,0,0,.62);

    font-family:var(--nvc-font);
    color:var(--nvc-body);
    text-align:left;

    /* hidden until script.js adds .gdpr-cookie-notice-loaded on <html> */
    transform:translateY(calc(100% + 34px));
    opacity:0;
    visibility:hidden;
    transition:
        transform .52s var(--nvc-ease),
        opacity .34s ease,
        visibility 0s linear .52s;
}
.gdpr-cookie-notice-loaded .gdpr-cookie-notice{
    transform:translateY(0);
    opacity:1;
    visibility:visible;
    transition:
        transform .52s var(--nvc-ease),
        opacity .34s ease,
        visibility 0s linear 0s;
}

/* A thin amber hairline along the top edge — the same gold rule the privacy
   page and the Stage Card email use to mark a surface as "ours". */
.gdpr-cookie-notice::before{
    content:'';
    position:absolute;
    left:24px;
    right:24px;
    top:-1px;
    height:2px;
    border-radius:2px;
    background:linear-gradient(90deg,
        rgba(255,217,163,0) 0%,
        rgba(255,217,163,.55) 22%,
        rgba(242,184,102,.55) 78%,
        rgba(242,184,102,0) 100%);
    pointer-events:none;
}

.gdpr-cookie-notice-description{
    flex:1 1 auto;
    min-width:0;
    margin:0;
    padding:0;
    color:var(--nvc-body);
    font-family:var(--nvc-font);
    font-size:14.5px;
    font-weight:400;
    line-height:1.62;
    letter-spacing:.005em;
    text-align:left;
    overflow-wrap:break-word;
}
.gdpr-cookie-notice-description a{
    color:var(--nvc-link);
    text-decoration:underline;
    text-underline-offset:3px;
}

.gdpr-cookie-notice-nav{
    flex:0 0 auto;
    display:flex;
    align-items:center;
    /* Three pills now. Between the phone breakpoint and the wide layout the
       row can run out of width, and a nowrap row would push the last button
       past the sheet edge; wrapping drops it onto a second line instead. */
    flex-wrap:wrap;
    justify-content:flex-end;
    gap:10px;
    margin:0;
    padding:0;
    background:none;
    border:0;
    width:auto;
    height:auto;
}

/* All three actions are the same size and the same weight on purpose: nudging
   a visitor towards "accept" with a loud button and a whispered link is not a
   free choice. Only the fill differs.

   Accept  amber gradient   — the affirmative action, allowed to be warm
   Reject  quiet grey fill  — SAME pill, SAME size, SAME font weight, one click
   Settings outline only    — not a decision, it opens the detail dialog

   The point of the middle tier is that refusing is reachable in exactly one
   click, like accepting, and looks like a real button rather than an escape
   hatch. It is calmer than accept, never smaller or fainter than it. */
.gdpr-cookie-notice-nav-item{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    height:auto;
    min-height:44px;             /* comfortable touch target */
    line-height:1.2;
    white-space:nowrap;
    margin:0;
    padding:12px 24px;
    border:1px solid var(--nvc-hairline);
    border-radius:999px;
    background:transparent;
    color:var(--nvc-ink);
    font-family:var(--nvc-font);
    font-size:14px;
    font-weight:600;
    letter-spacing:.04em;
    text-decoration:none;
    cursor:pointer;
    transition:
        border-color .18s ease,
        color .18s ease,
        background .18s ease,
        box-shadow .18s ease,
        transform .12s ease;
}
.gdpr-cookie-notice-nav-item:hover,
.gdpr-cookie-notice-nav-item:focus{
    text-decoration:none;
    color:var(--nvc-ink);
}
.gdpr-cookie-notice-nav-item-settings:hover,
.gdpr-cookie-notice-nav-item-settings:focus{
    border-color:rgba(255,217,163,.55);
    color:var(--nvc-amber-1);
    transform:translateY(-1px);
}

/* "Reject all" — the quiet fill. Opaque rather than a white overlay, so the
   contrast figure holds wherever the bar's gradient happens to sit behind it:
   #F5F5F5 text on #303030 measures 11.9:1, far past the 4.5:1 floor. */
.gdpr-cookie-notice-nav-item-quiet{
    background:#303030;
    border-color:rgba(255,255,255,.28);
    border-radius:999px;
    color:var(--nvc-ink);
    box-shadow:0 2px 10px rgba(0,0,0,.28);
}
.gdpr-cookie-notice-nav-item-quiet:hover,
.gdpr-cookie-notice-nav-item-quiet:focus{
    background:#3C3C3C;
    border-color:rgba(255,255,255,.42);
    color:var(--nvc-ink);
    transform:translateY(-1px);
}

.gdpr-cookie-notice-nav-item-btn{
    background:linear-gradient(165deg, var(--nvc-amber-1) 0%, var(--nvc-amber-2) 100%);
    border-color:rgba(255,200,130,.6);
    border-radius:999px;
    color:var(--nvc-amber-ink);
    box-shadow:0 4px 14px rgba(255,200,130,.18);
}
.gdpr-cookie-notice-nav-item-btn:hover,
.gdpr-cookie-notice-nav-item-btn:focus{
    background:linear-gradient(165deg,#FFE1B5 0%,#F5C079 100%);
    color:var(--nvc-amber-ink);
    box-shadow:0 6px 20px rgba(255,200,130,.28);
    transform:translateY(-1px);
}

/* ---------- bar: tablet ------------------------------------------------- */
@media (max-width:820px){
    .gdpr-cookie-notice{
        flex-direction:column;
        align-items:stretch;
        gap:16px;
        padding:18px 20px;
    }
    .gdpr-cookie-notice-nav{
        justify-content:flex-end;
    }
}

/* ---------- bar: phone -------------------------------------------------- */
@media (max-width:600px){
    .gdpr-cookie-notice{
        margin-bottom:calc(10px + env(safe-area-inset-bottom, 0px));
        margin-left:max(10px, env(safe-area-inset-left, 0px));
        margin-right:max(10px, env(safe-area-inset-right, 0px));
        padding:16px 16px 15px;
        border-radius:16px;
        gap:14px;
        /* never eat the whole screen: cap the sheet and scroll inside it */
        max-height:62vh;
        overflow-y:auto;
        -webkit-overflow-scrolling:touch;
        overscroll-behavior:contain;
    }
    .gdpr-cookie-notice::before{left:16px;right:16px;}
    .gdpr-cookie-notice-description{
        font-size:13.5px;
        line-height:1.58;
    }
    .gdpr-cookie-notice-nav{
        flex-direction:column;
        align-items:stretch;
        gap:9px;
    }
    .gdpr-cookie-notice-nav-item{
        width:100%;
        padding:12px 18px;
        white-space:normal;
    }
    /* The sheet is read top-down on a phone, so the two decisions come first
       and sit directly under one another — accept is not given the top slot
       with reject pushed below the settings link. Explicit orders on all
       three: leaving any of them to source order made the stack depend on the
       template, which is exactly what broke when the third button arrived. */
    .gdpr-cookie-notice-nav-item-accept{order:1;}
    .gdpr-cookie-notice-nav-item-decline{order:2;}
    .gdpr-cookie-notice-nav-item-settings{order:3;}
}

/* The bar is fixed, so on a phone it would sit on top of the last screenful
   of the page for as long as the visitor has not decided. script.js measures
   the sheet and publishes its height here; the padding disappears again the
   moment .gdpr-cookie-notice-loaded is dropped. */
@media (max-width:600px){
    html.gdpr-cookie-notice-loaded body{
        padding-bottom:var(--gdpr-cookie-notice-height, 0px);
    }
}

/* ==========================================================================
   THE SETTINGS DIALOG
   ========================================================================== */
.gdpr-cookie-notice-modal{
    position:fixed;
    left:0;
    top:0;
    width:100%;
    height:100%;
    z-index:10000001;
    display:none;
    align-items:center;
    justify-content:center;
    padding:20px 12px;
    background:rgba(6,6,6,.74);
    -webkit-backdrop-filter:blur(9px) saturate(1.1);
    backdrop-filter:blur(9px) saturate(1.1);
    overflow:auto;
    -webkit-overflow-scrolling:touch;
    font-family:var(--nvc-font);
}
.gdpr-cookie-notice-show-modal .gdpr-cookie-notice-modal{
    display:flex;
}

.gdpr-cookie-notice-modal-content{
    display:flex;
    flex-direction:column;
    width:100%;
    max-width:520px;
    max-height:calc(100vh - 40px);
    margin:auto;
    border:1px solid var(--nvc-hairline);
    border-radius:20px;
    background:var(--nvc-surface);
    background-color:#141414;
    box-shadow:
        0 1px 0 rgba(255,255,255,.07) inset,
        0 28px 70px rgba(0,0,0,.72);
    overflow:hidden;               /* keeps the rounded corners honest */
    animation:gdpr-nvc-rise .34s var(--nvc-ease) both;
}
@keyframes gdpr-nvc-rise{
    from{opacity:0;transform:translateY(14px) scale(.985);}
    to  {opacity:1;transform:none;}
}

/* ---------- dialog header ---------------------------------------------- */
.gdpr-cookie-notice-modal-header{
    flex:0 0 auto;
    display:flex;
    align-items:center;
    gap:14px;
    padding:20px 20px 18px 24px;
    border-bottom:1px solid var(--nvc-hairline-soft);
}
.gdpr-cookie-notice-modal-title{
    margin:0;
    padding:0;
    min-width:0;
    font-family:var(--nvc-font);
    font-size:18px;
    font-weight:600;
    line-height:1.3;
    letter-spacing:.005em;
    color:var(--nvc-ink);
    text-transform:none;
}
.gdpr-cookie-notice-modal-title::after{
    content:'';
    display:block;
    width:38px;
    height:2px;
    border-radius:2px;
    background:var(--nvc-gold);
    margin-top:9px;
}

.gdpr-cookie-notice-modal-close{
    flex:0 0 auto;
    width:38px;
    height:38px;
    margin:0 0 0 auto;
    padding:0;
    border:1px solid var(--nvc-hairline);
    border-radius:999px;
    background:transparent;
    outline:none;
    position:relative;
    cursor:pointer;
    transform:none;
    transition:border-color .18s ease, background .18s ease;
}
.gdpr-cookie-notice-modal-close:hover{
    transform:none;
    opacity:1;
    border-color:rgba(255,217,163,.55);
    background:rgba(255,255,255,.05);
}
.gdpr-cookie-notice-modal-close::before,
.gdpr-cookie-notice-modal-close::after{
    content:'';
    display:block;
    position:absolute;
    left:50%;
    top:50%;
    width:15px;
    height:1.5px;
    border-radius:2px;
    background:var(--nvc-body);
    transform:translate(-50%,-50%) rotate(45deg);
    transition:background .18s ease;
}
.gdpr-cookie-notice-modal-close::after{
    transform:translate(-50%,-50%) rotate(-45deg);
}
.gdpr-cookie-notice-modal-close:hover::before,
.gdpr-cookie-notice-modal-close:hover::after{
    background:var(--nvc-amber-1);
}

/* ---------- categories -------------------------------------------------- */
.gdpr-cookie-notice-modal-cookies{
    flex:1 1 auto;
    display:block;
    margin:0;
    padding:4px 0;
    list-style:none;
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
}
.gdpr-cookie-notice-modal-cookie{
    display:block;
    list-style:none;
    margin:0;
    padding:0;
    border:0;
    border-bottom:1px solid var(--nvc-hairline-soft);
}
.gdpr-cookie-notice-modal-cookie:last-child{border-bottom:0;}
.gdpr-cookie-notice-modal-cookie::before{content:none;}

.gdpr-cookie-notice-modal-cookie-row{
    position:relative;
    display:flex;
    align-items:center;
    gap:14px;
    padding:15px 24px;
}

.gdpr-cookie-notice-modal-cookie-title{
    flex:1 1 auto;
    min-width:0;
    position:relative;
    margin:0;
    padding:0 20px 0 0;
    font-family:var(--nvc-font);
    font-size:15px;
    font-weight:500;
    line-height:1.35;
    letter-spacing:.005em;
    color:var(--nvc-ink);
    text-transform:none;
    cursor:pointer;
    border-radius:6px;
    transition:color .18s ease;
}
.gdpr-cookie-notice-modal-cookie-title:hover{color:var(--nvc-amber-1);}

/* disclosure chevron */
.gdpr-cookie-notice-modal-cookie-title::after{
    content:'';
    display:block;
    position:absolute;
    right:2px;
    top:50%;
    width:8px;
    height:8px;
    margin-top:-6px;
    border:0;
    border-right:1.5px solid var(--nvc-gold);
    border-bottom:1.5px solid var(--nvc-gold);
    border-color:var(--nvc-gold);
    transform:rotate(45deg);
    transform-origin:center;
    transition:transform .28s var(--nvc-ease);
}
.open .gdpr-cookie-notice-modal-cookie-title::after{
    transform:rotate(-135deg);
    margin-top:-2px;
}

/* "Always on" — the essential category, which has no switch */
.gdpr-cookie-notice-modal-cookie-state{
    flex:0 0 auto;
    margin-left:auto;
    color:var(--nvc-link);
    font-family:var(--nvc-font);
    font-size:12px;
    font-weight:600;
    letter-spacing:.09em;
    text-transform:uppercase;
    white-space:nowrap;
}

/* The real checkbox: kept in the DOM, kept focusable, kept readable by id
   (privacy.php reads #gdpr-cookie-notice-cookie_analytics), only hidden. */
.gdpr-cookie-notice-modal-cookie-input{
    position:absolute;
    width:1px;
    height:1px;
    margin:-1px;
    padding:0;
    border:0;
    opacity:0;
    overflow:hidden;
    clip:rect(0 0 0 0);
    clip-path:inset(50%);
    white-space:nowrap;
}

/* the switch */
.gdpr-cookie-notice-modal-cookie-input-switch{
    flex:0 0 auto;
    display:block;
    position:relative;
    width:46px;
    height:27px;
    margin:0 0 0 auto;
    border-radius:999px;
    border:1px solid var(--nvc-hairline);
    background:rgba(255,255,255,.06);
    box-shadow:none;
    cursor:pointer;
    transition:background .24s ease, border-color .24s ease;
}
/* knob */
.gdpr-cookie-notice-modal-cookie-input-switch::after{
    content:'';
    display:block;
    position:absolute;
    left:3px;
    top:50%;
    right:auto;
    bottom:auto;
    width:19px;
    height:19px;
    margin-top:-9.5px;
    border-radius:50%;
    background:#8F8F8F;
    box-shadow:0 1px 3px rgba(0,0,0,.55);
    transition:transform .24s var(--nvc-ease), background .24s ease;
}
.gdpr-cookie-notice-modal-cookie-input:checked + .gdpr-cookie-notice-modal-cookie-input-switch{
    background:linear-gradient(165deg, var(--nvc-amber-1) 0%, var(--nvc-amber-2) 100%);
    border-color:rgba(255,200,130,.6);
    box-shadow:0 3px 12px rgba(255,200,130,.22);
}
.gdpr-cookie-notice-modal-cookie-input:checked + .gdpr-cookie-notice-modal-cookie-input-switch::after{
    transform:translateX(19px);
    background:var(--nvc-amber-ink);
}

.gdpr-cookie-notice-modal-cookie-info{
    display:none;
    margin:0;
    padding:0 24px 18px;
    font-family:var(--nvc-font);
    font-size:13.5px;
    font-weight:400;
    line-height:1.66;
    color:var(--nvc-quiet);
    overflow-wrap:anywhere;
    word-break:break-word;
}
.open .gdpr-cookie-notice-modal-cookie-info{display:block;}
.gdpr-cookie-notice-modal-cookie-info a{
    color:var(--nvc-link);
    text-decoration:underline;
    text-decoration-thickness:1px;
    text-underline-offset:3px;
}

/* ---------- dialog footer ---------------------------------------------- */
.gdpr-cookie-notice-modal-footer{
    flex:0 0 auto;
    display:flex;
    align-items:center;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:12px;
    padding:16px 24px calc(16px + env(safe-area-inset-bottom, 0px));
    border-top:1px solid var(--nvc-hairline-soft);
    border-radius:0;
    background:rgba(255,255,255,.028);
}

.gdpr-cookie-notice-modal-footer-item{
    position:relative;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    height:auto;
    min-height:44px;
    line-height:1.2;
    margin:0;
    padding:0;
    font-family:var(--nvc-font);
    font-size:14px;
    font-weight:600;
    letter-spacing:.03em;
    text-decoration:none;
    color:var(--nvc-link);
    cursor:pointer;
    transition:color .18s ease, box-shadow .18s ease, background .18s ease, transform .12s ease;
}
.gdpr-cookie-notice-modal-footer-item:hover{
    text-decoration:none;
    opacity:1;
    color:#FFFFFF;
}
/* the old chevron sprite is gone; keep the pseudo neutral */
.gdpr-cookie-notice-modal-footer-item::after{
    content:none;
    background:none;
}

.gdpr-cookie-notice-modal-footer-item-statement{
    padding:0 2px;
    text-decoration:underline;
    text-decoration-thickness:1px;
    text-decoration-color:rgba(255,220,160,.42);
    text-underline-offset:4px;
}
.gdpr-cookie-notice-modal-footer-item-statement:hover{
    text-decoration-color:#FFFFFF;
}

.gdpr-cookie-notice-modal-footer-item-btn{
    position:relative;
    padding:12px 26px;
    border:1px solid rgba(255,200,130,.6);
    border-radius:999px;
    background:linear-gradient(165deg, var(--nvc-amber-1) 0%, var(--nvc-amber-2) 100%);
    color:var(--nvc-amber-ink);
    box-shadow:0 4px 14px rgba(255,200,130,.18);
}
.gdpr-cookie-notice-modal-footer-item-btn:hover{
    background:linear-gradient(165deg,#FFE1B5 0%,#F5C079 100%);
    color:var(--nvc-amber-ink);
    box-shadow:0 6px 20px rgba(255,200,130,.28);
    transform:translateY(-1px);
}
.gdpr-cookie-notice-modal-footer-item-btn span{
    transition:opacity .22s ease;
}
/* the "saved" tick — inline data: URI, dark ink on the amber fill */
.gdpr-cookie-notice-modal-footer-item-btn::after{
    content:'';
    display:block;
    position:absolute;
    left:0;
    top:0;
    width:100%;
    height:100%;
    margin:0;
    opacity:0;
    transition:opacity .22s ease;
    background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="15" height="12" viewBox="0 0 14 11"><path d="m5 10.42-5-5 1.41-1.41 3.59 3.58 7.59-7.59 1.41 1.42z" fill="%23221605" fill-rule="evenodd"/></svg>') no-repeat center;
}
.gdpr-cookie-notice-modal-footer-item-btn.saved span{opacity:0;}
.gdpr-cookie-notice-modal-footer-item-btn.saved::after{opacity:1;}

/* ---------- dialog: phone ---------------------------------------------- */
@media (max-width:600px){
    .gdpr-cookie-notice-modal{
        padding:12px 10px;
        align-items:flex-end;
    }
    .gdpr-cookie-notice-modal-content{
        max-height:calc(100vh - 24px);
        border-radius:18px;
    }
    .gdpr-cookie-notice-modal-header{padding:17px 16px 15px 18px;}
    .gdpr-cookie-notice-modal-title{font-size:17px;}
    .gdpr-cookie-notice-modal-cookie-row{padding:14px 18px;gap:12px;}
    .gdpr-cookie-notice-modal-cookie-title{font-size:14.5px;}
    .gdpr-cookie-notice-modal-cookie-info{padding:0 18px 16px;font-size:13px;}
    .gdpr-cookie-notice-modal-footer{
        padding:14px 18px calc(14px + env(safe-area-inset-bottom, 0px));
        gap:10px;
        justify-content:center;
    }
    .gdpr-cookie-notice-modal-footer-item-statement{order:2;}
    .gdpr-cookie-notice-modal-footer-item-btn{
        order:1;
        width:100%;
        padding:13px 20px;
    }
}

/* Very narrow (360px and below): keep the switch from crowding the title. */
@media (max-width:380px){
    .gdpr-cookie-notice-modal-cookie-row{gap:9px;}
    .gdpr-cookie-notice-modal-cookie-input-switch{width:42px;height:25px;}
    .gdpr-cookie-notice-modal-cookie-input:checked + .gdpr-cookie-notice-modal-cookie-input-switch::after{
        transform:translateX(17px);
    }
    .gdpr-cookie-notice-modal-cookie-input-switch::after{width:17px;height:17px;margin-top:-8.5px;}
    .gdpr-cookie-notice-modal-cookie-state{font-size:11px;letter-spacing:.07em;}
}

/* ==========================================================================
   FOCUS — every interactive element must show where the keyboard is
   ========================================================================== */
.gdpr-cookie-notice-nav-item:focus-visible,
.gdpr-cookie-notice-modal-close:focus-visible,
.gdpr-cookie-notice-modal-footer-item:focus-visible,
.gdpr-cookie-notice-modal-cookie-title:focus-visible,
.gdpr-cookie-notice-modal-cookie-input:focus-visible + .gdpr-cookie-notice-modal-cookie-input-switch{
    outline:2px solid var(--nvc-amber-1);
    outline-offset:3px;
}
.gdpr-cookie-notice-modal-cookie-title:focus-visible{outline-offset:4px;}

/* Browsers without :focus-visible still get a ring rather than nothing. */
@supports not selector(:focus-visible){
    .gdpr-cookie-notice-nav-item:focus,
    .gdpr-cookie-notice-modal-close:focus,
    .gdpr-cookie-notice-modal-footer-item:focus,
    .gdpr-cookie-notice-modal-cookie-title:focus,
    .gdpr-cookie-notice-modal-cookie-input:focus + .gdpr-cookie-notice-modal-cookie-input-switch{
        outline:2px solid var(--nvc-amber-1);
        outline-offset:3px;
    }
}

/* ==========================================================================
   MOTION
   ========================================================================== */
@media (prefers-reduced-motion: reduce){
    .gdpr-cookie-notice,
    .gdpr-cookie-notice-loaded .gdpr-cookie-notice{
        transform:none;
        transition:opacity .01ms linear, visibility 0s linear;
    }
    .gdpr-cookie-notice *,
    .gdpr-cookie-notice *::before,
    .gdpr-cookie-notice *::after,
    .gdpr-cookie-notice-modal *,
    .gdpr-cookie-notice-modal *::before,
    .gdpr-cookie-notice-modal *::after{
        transition-duration:.01ms !important;
        animation-duration:.01ms !important;
        animation-iteration-count:1 !important;
    }
    .gdpr-cookie-notice-modal-content{animation:none;}
    .gdpr-cookie-notice-nav-item:hover,
    .gdpr-cookie-notice-nav-item:focus,
    .gdpr-cookie-notice-modal-footer-item-btn:hover{transform:none;}
}

/* Windows high-contrast / forced-colors: let the OS palette through. */
@media (forced-colors: active){
    .gdpr-cookie-notice,
    .gdpr-cookie-notice-modal-content{border:1px solid CanvasText;}
    .gdpr-cookie-notice-nav-item,
    .gdpr-cookie-notice-modal-footer-item-btn,
    .gdpr-cookie-notice-modal-close{border:1px solid ButtonText;}
    .gdpr-cookie-notice-modal-cookie-input-switch{forced-color-adjust:none;}
}
