/**
 * SimpleCMP — default theme as a standalone stylesheet (REQ-16 / ADR-0007).
 *
 * Most consumers don't need this file. Components in Shadow DOM mode
 * (the default) carry these rules inline via `static styles`, scoped
 * automatically. This file exists for two scenarios:
 *
 *   1. **Light DOM mode** (`<simplecmp-banner mode="light">`). Components
 *      render into the host's regular DOM where `static styles` don't
 *      apply, so the host page must `<link>` this file (or write its own).
 *
 *   2. **Server-rendered preview / no-JS fallback** where the component
 *      HTML is emitted server-side and styled before Lit hydrates.
 *
 * The selectors are scoped to the `simplecmp-*` tag names so the rules
 * never bleed onto unrelated host elements. Override any token at any
 * level — they cascade through the tag-name selectors:
 *
 *     simplecmp-banner { --simplecmp-color-primary: #ff6600; }
 *
 * The Bootstrap adapter in `bootstrap.css` is the canonical example.
 *
 * **Drift warning:** these rules duplicate the component `static styles`.
 * Keep them in sync when updating either side. Long-term, REQ-17 may
 * consolidate to a single source of truth.
 */

/* --- design tokens -------------------------------------------------- */

:where(
    simplecmp-banner,
    simplecmp-modal,
    simplecmp-purpose-group,
    simplecmp-service-toggle,
    simplecmp-trigger,
    simplecmp-policy-links,
    simplecmp-contextual-notice
) {
    --simplecmp-color-primary: #15775a;
    --simplecmp-color-primary-hover: #0f5d44;
    --simplecmp-color-secondary: #6c757d;
    --simplecmp-color-danger: #da2c43;
    --simplecmp-color-bg: #ffffff;
    --simplecmp-color-bg-alt: #f5f7f9;
    --simplecmp-color-border: #dde2e7;
    --simplecmp-color-text: #1a232c;
    --simplecmp-color-text-muted: #5f6b78;

    --simplecmp-radius: 6px;
    --simplecmp-spacing: 0.75rem;
    --simplecmp-spacing-sm: 0.5rem;
    --simplecmp-spacing-lg: 1.25rem;

    --simplecmp-font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
    --simplecmp-font-family-heading: var(--simplecmp-font-family);
    --simplecmp-font-size: 0.95rem;
    --simplecmp-font-size-heading: 20px;
    --simplecmp-font-size-sm: 0.85rem;
    --simplecmp-line-height: 1.5;

    --simplecmp-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
    --simplecmp-z-index: 2147483000;

    color: var(--simplecmp-color-text);
    font-family: var(--simplecmp-font-family);
    font-size: var(--simplecmp-font-size);
    line-height: var(--simplecmp-line-height);
}

/* --- banner --------------------------------------------------------- */

simplecmp-banner {
    display: block;
    position: fixed;
    right: var(--simplecmp-spacing);
    bottom: var(--simplecmp-spacing);
    max-width: 30rem;
    z-index: var(--simplecmp-z-index);
}

simplecmp-banner[hidden] {
    display: none;
}

simplecmp-banner .cn-body {
    background: var(--simplecmp-color-bg);
    color: var(--simplecmp-color-text);
    border: 1px solid var(--simplecmp-color-border);
    border-radius: var(--simplecmp-radius);
    box-shadow: var(--simplecmp-shadow);
    padding: var(--simplecmp-spacing-lg);
}

simplecmp-banner h2 {
    margin: 0 0 var(--simplecmp-spacing) 0;
    font-size: 1.1rem;
}

simplecmp-banner p {
    margin: 0 0 var(--simplecmp-spacing) 0;
}

simplecmp-banner .cn-policy-links,
simplecmp-banner .cn-policy-links a {
    font-size: var(--simplecmp-font-size-sm);
    color: var(--simplecmp-color-text-muted);
}

simplecmp-banner .cn-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: var(--simplecmp-spacing-sm);
    margin-top: var(--simplecmp-spacing);
}

simplecmp-banner button {
    font: inherit;
    border: 1px solid transparent;
    border-radius: var(--simplecmp-radius);
    padding: var(--simplecmp-spacing-sm) var(--simplecmp-spacing);
    cursor: pointer;
}

simplecmp-banner button.cn-accept {
    background: var(--simplecmp-color-primary);
    color: white;
}

simplecmp-banner button.cn-accept:hover {
    background: var(--simplecmp-color-primary-hover);
}

simplecmp-banner button.cn-decline {
    background: transparent;
    color: var(--simplecmp-color-danger);
    border-color: var(--simplecmp-color-danger);
}

simplecmp-banner button.cn-configure {
    background: transparent;
    color: var(--simplecmp-color-text);
    border-color: var(--simplecmp-color-border);
}

simplecmp-banner a {
    color: var(--simplecmp-color-primary);
}

simplecmp-banner .cn-changes {
    font-size: var(--simplecmp-font-size-sm);
    font-style: italic;
    color: var(--simplecmp-color-text-muted);
}

/* --- modal ---------------------------------------------------------- */

simplecmp-modal {
    display: contents;
}

simplecmp-modal dialog {
    max-width: 40rem;
    width: 90%;
    border: 1px solid var(--simplecmp-color-border);
    border-radius: var(--simplecmp-radius);
    padding: 0;
    background: var(--simplecmp-color-bg);
    color: var(--simplecmp-color-text);
    font-family: var(--simplecmp-font-family);
    font-size: var(--simplecmp-font-size);
}

simplecmp-modal dialog::backdrop {
    background: rgba(0, 0, 0, 0.4);
}

simplecmp-modal .header,
simplecmp-modal .body,
simplecmp-modal .footer {
    padding: var(--simplecmp-spacing-lg);
}

simplecmp-modal .header {
    border-bottom: 1px solid var(--simplecmp-color-border);
    position: relative;
}

simplecmp-modal h1 {
    margin: 0 0 var(--simplecmp-spacing) 0;
    font-size: 1.25rem;
}

simplecmp-modal .description {
    /* margin: 0 0 var(--simplecmp-spacing) 0; */
}

simplecmp-modal .policy-links,
simplecmp-modal .policy-links a {
    margin: 0;
    font-size: var(--simplecmp-font-size-sm);
    color: var(--simplecmp-color-text-muted);
}

simplecmp-modal .close {
    position: absolute;
    top: var(--simplecmp-spacing);
    right: var(--simplecmp-spacing);
    background: none;
    border: none;
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
    color: var(--simplecmp-color-text-muted);
}

simplecmp-modal .footer {
    border-top: 1px solid var(--simplecmp-color-border);
    display: flex;
    gap: var(--simplecmp-spacing-sm);
    flex-wrap: wrap;
    justify-content: flex-end;
}

simplecmp-modal button.action {
    font: inherit;
    border: 1px solid transparent;
    border-radius: var(--simplecmp-radius);
    padding: var(--simplecmp-spacing-sm) var(--simplecmp-spacing);
    cursor: pointer;
}

simplecmp-modal button.accept-all,
simplecmp-modal button.save {
    background: var(--simplecmp-color-primary);
    color: white;
}

simplecmp-modal button.accept-all:hover,
simplecmp-modal button.save:hover {
    background: var(--simplecmp-color-primary-hover);
}

simplecmp-modal button.decline {
    background: transparent;
    color: var(--simplecmp-color-danger);
    border-color: var(--simplecmp-color-danger);
}

simplecmp-modal ul.services {
    list-style: none;
    padding: 0;
    margin: 0;
}

/* --- purpose-group -------------------------------------------------- */

simplecmp-purpose-group {
    display: block;
    border: 1px solid var(--simplecmp-color-border);
    border-radius: var(--simplecmp-radius);
    padding: var(--simplecmp-spacing);
    margin-bottom: var(--simplecmp-spacing-sm);
}

simplecmp-purpose-group .header {
    display: flex;
    align-items: flex-start;
    gap: var(--simplecmp-spacing-sm);
}

simplecmp-purpose-group input[type='checkbox'] {
    margin-top: 0.25rem;
}

simplecmp-purpose-group .title {
    font-weight: 500;
}

simplecmp-purpose-group .description {
    margin: 0.25rem 0 0 0;
    font-size: var(--simplecmp-font-size-sm);
    color: var(--simplecmp-color-text-muted);
}

simplecmp-purpose-group .toggle-services {
    margin-top: var(--simplecmp-spacing-sm);
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    font-size: var(--simplecmp-font-size-sm);
    color: var(--simplecmp-color-primary);
    cursor: pointer;
}

simplecmp-purpose-group .services {
    margin-top: var(--simplecmp-spacing-sm);
    padding-left: var(--simplecmp-spacing-lg);
    border-left: 2px solid var(--simplecmp-color-border);
}

simplecmp-purpose-group .services[hidden] {
    display: none;
}

/* --- service-toggle ------------------------------------------------- */

simplecmp-service-toggle {
    display: block;
    margin: var(--simplecmp-spacing-sm) 0;
}

simplecmp-service-toggle .row {
    display: flex;
    align-items: flex-start;
    gap: var(--simplecmp-spacing-sm);
}

simplecmp-service-toggle input[type='checkbox'] {
    margin-top: 0.25rem;
    flex-shrink: 0;
}

simplecmp-service-toggle .meta {
    flex: 1;
}

simplecmp-service-toggle .title {
    font-weight: 500;
}

simplecmp-service-toggle .badge {
    display: inline-block;
    margin-left: var(--simplecmp-spacing-sm);
    padding: 0 0.4rem;
    font-size: var(--simplecmp-font-size-sm);
    background: var(--simplecmp-color-bg-alt);
    border-radius: var(--simplecmp-radius);
    color: var(--simplecmp-color-text-muted);
}

simplecmp-service-toggle .description,
simplecmp-service-toggle .purposes {
    margin: 0.25rem 0 0 0;
    font-size: var(--simplecmp-font-size-sm);
    color: var(--simplecmp-color-text-muted);
}

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

simplecmp-trigger {
    display: contents;
}

simplecmp-trigger button {
    position: fixed;
    z-index: var(--simplecmp-z-index);
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    background: var(--simplecmp-color-primary);
    color: white;
    border: none;
    box-shadow: var(--simplecmp-shadow);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

simplecmp-trigger button:hover {
    background: var(--simplecmp-color-primary-hover);
}

simplecmp-trigger[position='bottom-right'] button {
    right: var(--simplecmp-spacing);
    bottom: var(--simplecmp-spacing);
}

simplecmp-trigger[position='bottom-left'] button {
    left: var(--simplecmp-spacing);
    bottom: var(--simplecmp-spacing);
}

simplecmp-trigger[position='top-right'] button {
    right: var(--simplecmp-spacing);
    top: var(--simplecmp-spacing);
}

simplecmp-trigger[position='top-left'] button {
    left: var(--simplecmp-spacing);
    top: var(--simplecmp-spacing);
}

simplecmp-trigger svg {
    width: 1.25rem;
    height: 1.25rem;
}

/* --- policy-links --------------------------------------------------- */

simplecmp-policy-links {
    display: inline;
    font-size: var(--simplecmp-font-size-sm);
    color: var(--simplecmp-color-text-muted);
}

simplecmp-policy-links a {
    color: var(--simplecmp-color-text-muted);
}

/* --- contextual-notice --------------------------------------------- */

simplecmp-contextual-notice {
    display: block;
    padding: var(--simplecmp-spacing-lg);
    background: var(--simplecmp-color-bg-alt);
    border: 1px solid var(--simplecmp-color-border);
    border-radius: var(--simplecmp-radius);
    color: var(--simplecmp-color-text);
}

simplecmp-contextual-notice p {
    margin: 0 0 var(--simplecmp-spacing) 0;
}

simplecmp-contextual-notice .buttons {
    display: flex;
    flex-wrap: wrap;
    gap: var(--simplecmp-spacing-sm);
}

simplecmp-contextual-notice button {
    font: inherit;
    border: 1px solid transparent;
    border-radius: var(--simplecmp-radius);
    padding: var(--simplecmp-spacing-sm) var(--simplecmp-spacing);
    cursor: pointer;
}

simplecmp-contextual-notice button.accept {
    background: var(--simplecmp-color-primary);
    color: white;
}

simplecmp-contextual-notice button.accept:hover {
    background: var(--simplecmp-color-primary-hover);
}

simplecmp-contextual-notice button.accept-once {
    background: transparent;
    color: var(--simplecmp-color-primary);
    border-color: var(--simplecmp-color-primary);
}

simplecmp-contextual-notice button.configure {
    background: transparent;
    color: var(--simplecmp-color-text);
    border-color: var(--simplecmp-color-border);
}
