/*!
 * DataFirefly Cookie Consent — Banner CSS
 */
.dfcc{
    --dfcc-bg:#ffffff;
    --dfcc-fg:#0f172a;
    --dfcc-muted:#64748b;
    --dfcc-border:rgba(15,23,42,.12);
    --dfcc-shadow:0 8px 30px rgba(15,23,42,.12);
    --dfcc-radius:12px;
    --dfcc-radius-sm:8px;
    --dfcc-accent:#0f172a;
    --dfcc-accent-fg:#ffffff;
    --dfcc-secondary-bg:rgba(15,23,42,.06);
    --dfcc-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    font-family:var(--dfcc-font);
    font-size:14px;
    line-height:1.5;
    color:var(--dfcc-fg);
    color-scheme:light;
}
.dfcc-theme-dark{
    --dfcc-bg:#0f172a;
    --dfcc-fg:#f1f5f9;
    --dfcc-muted:#94a3b8;
    --dfcc-border:rgba(241,245,249,.14);
    --dfcc-shadow:0 8px 30px rgba(0,0,0,.45);
    --dfcc-accent-fg:#0f172a;
    --dfcc-secondary-bg:rgba(241,245,249,.08);
    color-scheme:dark;
}

.dfcc[hidden]{display:none}
.dfcc *{box-sizing:border-box}
.dfcc button{font-family:inherit}

/* ----- Bandeau ----- */
.dfcc-banner{
    position:fixed;
    left:50%;
    transform:translateX(-50%);
    bottom:20px;
    width:calc(100% - 32px);
    max-width:1100px;
    background:var(--dfcc-bg);
    color:var(--dfcc-fg);
    border:1px solid var(--dfcc-border);
    border-radius:var(--dfcc-radius);
    box-shadow:var(--dfcc-shadow);
    z-index:2147483600;
    animation:dfcc-slide-up .35s cubic-bezier(.16,1,.3,1) both;
}
.dfcc-pos-top .dfcc-banner{
    top:20px;
    bottom:auto;
    animation:dfcc-slide-down .35s cubic-bezier(.16,1,.3,1) both;
}
.dfcc-layout-card .dfcc-banner{
    left:auto;
    right:20px;
    transform:none;
    max-width:420px;
}
.dfcc-layout-popup .dfcc-banner{
    top:50%;
    bottom:auto;
    transform:translate(-50%,-50%);
    max-width:600px;
}
.dfcc-banner-inner{
    display:flex;
    gap:24px;
    padding:20px 24px;
    align-items:center;
    flex-wrap:wrap;
}
.dfcc-layout-card .dfcc-banner-inner,
.dfcc-layout-popup .dfcc-banner-inner{flex-direction:column;align-items:stretch}
.dfcc-banner-content{flex:1;min-width:260px}
.dfcc-title{
    margin:0 0 6px;
    font-size:1.05rem;
    font-weight:600;
    letter-spacing:-.01em;
}
.dfcc-text{
    margin:0 0 8px;
    color:var(--dfcc-muted);
    font-size:.9rem;
}
.dfcc-links{margin:0;font-size:.8rem}
.dfcc-links a{
    color:var(--dfcc-muted);
    text-decoration:underline;
    text-underline-offset:2px;
    margin-right:14px;
}
.dfcc-links a:hover{color:var(--dfcc-fg)}

.dfcc-banner-actions{
    display:flex;
    gap:8px;
    flex-wrap:wrap;
    align-items:center;
    flex-shrink:0;
}
.dfcc-layout-card .dfcc-banner-actions,
.dfcc-layout-popup .dfcc-banner-actions{flex-direction:column;align-items:stretch}

/* ----- Boutons ----- */
.dfcc-btn{
    appearance:none;
    border:1px solid transparent;
    border-radius:var(--dfcc-radius-sm);
    padding:10px 16px;
    font-size:.875rem;
    font-weight:500;
    cursor:pointer;
    transition:all .15s ease;
    line-height:1.2;
    min-height:40px;
    white-space:nowrap;
}
.dfcc-btn:focus-visible{
    outline:2px solid var(--dfcc-accent);
    outline-offset:2px;
}
.dfcc-btn-primary{
    background:var(--dfcc-accent);
    color:var(--dfcc-accent-fg);
}
.dfcc-btn-primary:hover{filter:brightness(.92)}
.dfcc-btn-secondary{
    background:var(--dfcc-secondary-bg);
    color:var(--dfcc-fg);
}
.dfcc-btn-secondary:hover{background:var(--dfcc-border)}
.dfcc-btn-ghost{
    background:transparent;
    color:var(--dfcc-muted);
    text-decoration:underline;
    text-underline-offset:3px;
    padding-left:8px;
    padding-right:8px;
}
.dfcc-btn-ghost:hover{color:var(--dfcc-fg)}

/* ----- Modal ----- */
.dfcc-modal{
    position:fixed;inset:0;
    z-index:2147483601;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:16px;
}
.dfcc-modal[hidden]{display:none}
.dfcc-modal-overlay{
    position:absolute;inset:0;
    background:rgba(15,23,42,.55);
    backdrop-filter:blur(2px);
    animation:dfcc-fade .25s ease both;
}
.dfcc-modal-dialog{
    position:relative;
    background:var(--dfcc-bg);
    color:var(--dfcc-fg);
    border-radius:var(--dfcc-radius);
    box-shadow:var(--dfcc-shadow);
    max-width:560px;
    width:100%;
    max-height:calc(100vh - 32px);
    display:flex;
    flex-direction:column;
    overflow:hidden;
    animation:dfcc-pop .3s cubic-bezier(.16,1,.3,1) both;
}
.dfcc-modal-header{
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:20px 24px;
    border-bottom:1px solid var(--dfcc-border);
}
.dfcc-modal-header h2{
    margin:0;
    font-size:1.1rem;
    font-weight:600;
    letter-spacing:-.01em;
}
.dfcc-modal-close{
    background:none;
    border:none;
    font-size:1.6rem;
    line-height:1;
    color:var(--dfcc-muted);
    cursor:pointer;
    padding:4px 10px;
    border-radius:6px;
}
.dfcc-modal-close:hover{background:var(--dfcc-secondary-bg);color:var(--dfcc-fg)}
.dfcc-modal-body{
    padding:20px 24px;
    overflow-y:auto;
    flex:1;
}
.dfcc-modal-footer{
    padding:16px 24px;
    border-top:1px solid var(--dfcc-border);
    display:flex;
    gap:8px;
    justify-content:flex-end;
    flex-wrap:wrap;
}

/* ----- Catégorie ----- */
.dfcc-category{
    padding:14px 0;
    border-bottom:1px solid var(--dfcc-border);
}
.dfcc-category:last-child{border-bottom:none}
.dfcc-category-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
}
.dfcc-toggle{
    display:flex;
    align-items:center;
    gap:12px;
    cursor:pointer;
    user-select:none;
}
.dfcc-toggle input{
    position:absolute;
    opacity:0;
    pointer-events:none;
}
.dfcc-toggle-track{
    position:relative;
    width:40px;
    height:22px;
    background:var(--dfcc-secondary-bg);
    border:1px solid var(--dfcc-border);
    border-radius:999px;
    transition:background .2s ease;
    flex-shrink:0;
}
.dfcc-toggle-track::after{
    content:'';
    position:absolute;
    top:2px;
    left:2px;
    width:16px;
    height:16px;
    background:var(--dfcc-bg);
    border:1px solid var(--dfcc-border);
    border-radius:50%;
    transition:transform .2s ease;
}
.dfcc-toggle input:checked + .dfcc-toggle-track{
    background:var(--dfcc-accent);
    border-color:var(--dfcc-accent);
}
.dfcc-toggle input:checked + .dfcc-toggle-track::after{
    transform:translateX(18px);
    background:var(--dfcc-accent-fg);
    border-color:var(--dfcc-accent-fg);
}
.dfcc-toggle input:disabled + .dfcc-toggle-track{opacity:.65;cursor:not-allowed}
.dfcc-toggle-label{font-weight:500}
.dfcc-tag{
    font-size:.7rem;
    text-transform:uppercase;
    letter-spacing:.05em;
    color:var(--dfcc-muted);
    background:var(--dfcc-secondary-bg);
    padding:3px 8px;
    border-radius:999px;
}
.dfcc-category-desc{
    margin:6px 0 0;
    color:var(--dfcc-muted);
    font-size:.85rem;
    padding-left:52px;
}

.dfcc-powered{
    text-align:center;
    padding:8px;
    color:var(--dfcc-muted);
}
.dfcc-powered a{color:var(--dfcc-muted)}

/* ----- Animations ----- */
@keyframes dfcc-slide-up{
    from{opacity:0;transform:translate(-50%,30px)}
    to{opacity:1;transform:translate(-50%,0)}
}
@keyframes dfcc-slide-down{
    from{opacity:0;transform:translate(-50%,-30px)}
    to{opacity:1;transform:translate(-50%,0)}
}
@keyframes dfcc-fade{from{opacity:0}to{opacity:1}}
@keyframes dfcc-pop{
    from{opacity:0;transform:scale(.96)}
    to{opacity:1;transform:scale(1)}
}

@media (prefers-reduced-motion: reduce){
    .dfcc-banner,.dfcc-modal-overlay,.dfcc-modal-dialog{animation:none}
}

/* ----- Mobile ----- */
@media (max-width:640px){
    .dfcc-banner{
        bottom:0;
        left:0;
        right:0;
        transform:none;
        max-width:100%;
        width:100%;
        border-radius:var(--dfcc-radius) var(--dfcc-radius) 0 0;
        border-bottom:0;
    }
    .dfcc-pos-top .dfcc-banner{
        top:0;
        border-radius:0 0 var(--dfcc-radius) var(--dfcc-radius);
        border-top:0;
    }
    .dfcc-banner-actions{width:100%}
    .dfcc-btn{flex:1;min-width:120px}
}
