/* Rheinland Secure design tokens */
.cc {
    --cc-bg: #ffffff; --cc-text: #2e3644; --cc-head: #0a364a; --cc-muted: #555555; --cc-line: #d8d8d8;
    --cc-link: #0a364a; --cc-focus: #135879; --cc-radius: 2px;
    --cc-btn-bg: #0a364a; --cc-btn-text: #ffffff; --cc-btn-hover-bg: #135879; --cc-btn-hover-text: #ffffff;
    --cc-font: 'Inter', -apple-system, 'Helvetica Neue', Arial, sans-serif; --cc-font-head: 'Lora', serif;
}
/* Consent bar, self-hosted, no external resources */
.cc[hidden], .cc__panel[hidden] { display: none !important; }
.cc {
    position: fixed; z-index: 2147483000;
    left: 0; right: 0; bottom: 0;
    max-height: 85vh; overflow-y: auto;
    background: var(--cc-bg); color: var(--cc-text);
    border-top: 1px solid var(--cc-line);
    box-shadow: 0 -4px 16px rgba(0,0,0,0.08);
    font-family: var(--cc-font); font-size: 14px; line-height: 1.45;
}
.cc__box {
    max-width: 1200px; margin: 0 auto; padding: 10px 24px;
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 24px;
}
.cc__text { margin: 0; flex: 1 1 280px; }
.cc a { color: var(--cc-link); text-decoration: underline; text-underline-offset: 3px; }
.cc__actions { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.cc__btn {
    display: inline-flex; align-items: center; justify-content: center;
    min-height: 40px; padding: 8px 20px;
    font-family: var(--cc-font); font-size: 14px; font-weight: 600; letter-spacing: 0.01em; line-height: 1.2;
    border: 1px solid var(--cc-btn-bg); border-radius: var(--cc-radius);
    cursor: pointer; transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.cc__btn--primary { background: var(--cc-btn-bg); color: var(--cc-btn-text); }
.cc__btn--primary:hover { background: var(--cc-btn-hover-bg); color: var(--cc-btn-hover-text); border-color: var(--cc-btn-bg); }
.cc__btn--ghost { background: transparent; color: var(--cc-head); border-color: rgba(0,0,0,0.3); }
.cc__btn--ghost:hover { border-color: var(--cc-btn-bg); }
.cc__btn:focus-visible, .cc__more:focus-visible, .cc a:focus-visible, .cc input:focus-visible { outline: 2px solid var(--cc-focus); outline-offset: 2px; }
.cc__more {
    padding: 8px 6px; background: none; border: 0; cursor: pointer;
    font-family: var(--cc-font); font-size: 13px; color: var(--cc-muted); text-decoration: underline; text-underline-offset: 3px;
}
.cc__more:hover { color: var(--cc-link); }
.cc__panel { flex: 1 1 100%; max-width: 720px; margin: 4px 0 6px; border-top: 1px solid var(--cc-line); padding-top: 10px; font-size: 13px; }
.cc__info { margin: 0 0 6px; color: var(--cc-muted); }
.cc__cat { padding: 8px 0; border-bottom: 1px solid var(--cc-line); }
.cc__cat-head { display: flex; align-items: center; gap: 10px; }
.cc__cat-head input { width: 18px; height: 18px; margin: 0; accent-color: var(--cc-btn-bg); flex: 0 0 auto; }
.cc__cat-head label { font-weight: 600; color: var(--cc-head); cursor: pointer; }
.cc__badge { margin-left: auto; font-size: 12px; color: var(--cc-muted); }
.cc__cat-desc { margin: 4px 0 0 28px; color: var(--cc-muted); }
.cc__links { margin: 10px 0 0; }
.cc__btn--save { margin-top: 10px; }
.cc__sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
html.cc-open body { padding-bottom: 64px; }
@media (max-width: 760px) {
    .cc { font-size: 13px; }
    .cc__box { padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px)); gap: 8px; }
    .cc__text { flex-basis: 100%; }
    .cc__actions { flex: 1 1 100%; }
    .cc__more { margin-right: auto; padding-left: 0; }
    .cc__btn { min-height: 40px; padding: 8px 16px; font-size: 13px; }
    .cc__btn--primary { flex: 1 1 auto; }
    html.cc-open body { padding-bottom: 104px; }
}
@media (prefers-reduced-motion: reduce) { .cc__btn { transition: none; } }
@media print { .cc { display: none !important; } }
