/* Color themes share Held's existing layout and square, pixel-print controls.
   High contrast intentionally receives none of these overrides. */
:root[data-contrast=normal]{
 --bg:#141827;
 --ink:#fff8ed;
 --surface:#20283d;
 --surface-raised:#20283d;
 --surface-soft:#2a3556;
 --surface-active:#354364;
 --line:var(--ink);
 --line-soft:#71809f;
 --muted:#bbc2d7;
 --quiet:var(--muted);
 /* The legacy blue token is also used for text, so keep it readable. */
 --blue:var(--ink);
 --blue-bright:var(--ink);
 --focus:var(--ink);
 --danger:#ffb0a2;
 --danger-surface:#412b34;
 --accent:#ff9579;
 --accent-hover:#ffac96;
 --accent-ink:#1c2541;
 --lime:#c6ea79;
 --link:#d2d8ff;
 --shadow:#080d19;
}
:root[data-contrast=normal][data-theme=light]{
 --bg:#fff8ed;
 --ink:#1c2541;
 --surface:#fff;
 --surface-raised:#fff;
 --surface-soft:#e3e8ff;
 --surface-active:#d3dcff;
 --line-soft:#788198;
 --muted:#58617a;
 --danger:#9b302a;
 --danger-surface:#fff0ea;
 --accent:#ff8165;
 --accent-hover:#ff977f;
 --link:#39468a;
 --shadow:#c6cad9;
}

:root[data-contrast=normal] ::selection{background:var(--accent);color:var(--accent-ink)}
:root[data-contrast=normal] :is(button,a,input,textarea,select,summary,[tabindex]):focus-visible{outline-color:var(--focus)}
:root[data-contrast=normal] :is(textarea,input)::placeholder{color:var(--muted);opacity:1}
:root[data-contrast=normal] :where(textarea,input:not([type=checkbox]):not([type=radio]),select){background:var(--surface);color:var(--ink);caret-color:var(--ink)}
:root[data-contrast=normal] :is(textarea,input,select):focus{border-color:var(--ink)}
:root[data-contrast=normal] input[type=checkbox]{background:var(--surface)}
:root[data-contrast=normal] input[type=checkbox]:checked{background:var(--surface-active)}

/* Coral carries actions; periwinkle marks the current section and selection. */
:root[data-contrast=normal] :is(.button-primary,.primary-link,.audio-play){background:var(--accent);color:var(--accent-ink);border-color:var(--ink)}
:root[data-contrast=normal] .button-primary{box-shadow:3px 3px 0 var(--bg),4px 4px 0 var(--ink)}
:root[data-contrast=normal] :is(.button-primary,.primary-link,.audio-play):hover:not(:disabled){background:var(--accent-hover);color:var(--accent-ink)}
:root[data-contrast=normal] .button-primary:active{box-shadow:none}
:root[data-contrast=normal] :is(.button-secondary,.icon-button,.attachment-action,.participants-button,.pairing-method,.file-transfer-button,.pairing-receive){background:var(--surface);color:var(--ink)}
:root[data-contrast=normal] :is(.quiet-button,.icon-button,.button-secondary,.attachment-action,.participants-button,.pairing-method,.file-transfer-button,.pairing-receive):hover:not(:disabled){background:var(--surface-active);color:var(--ink)}
:root[data-contrast=normal] :is(.pairing-method:hover,.participants-button:hover) :is(strong,small,svg,.pairing-method-arrow){color:var(--ink)}
:root[data-contrast=normal] .compose-switch{background:var(--surface)}
:root[data-contrast=normal] .compose-switch :is(button,a){color:var(--muted)}
:root[data-contrast=normal] .compose-switch :is(button,a)[aria-pressed=true],
:root[data-contrast=normal] .file-transfer-button[aria-pressed=true]{background:var(--surface-soft);color:var(--ink);box-shadow:inset 0 -3px 0 var(--accent)}
:root[data-contrast=normal] .compose-switch :is(button,a):hover:not([aria-pressed=true]){background:var(--surface-soft);color:var(--ink)}
:root[data-contrast=normal] .header-actions>.identity-trigger{background:var(--surface);color:var(--ink)}
:root[data-contrast=normal] .header-actions>.identity-trigger:hover{background:var(--surface-active)}
:root[data-contrast=normal] .mode-grid{background:var(--surface)}
:root[data-contrast=normal] .mode-option:has(input:checked){background:var(--surface-soft);color:var(--ink);box-shadow:inset 3px 0 0 var(--accent)}
:root[data-contrast=normal] .mode-option:has(input:checked) .mode-copy strong{color:var(--ink)}
:root[data-contrast=normal] .mode-option:has(input:checked) .mode-copy>span{color:var(--muted)}
:root[data-contrast=normal] .mode-option input:checked{background:var(--ink);border-color:var(--ink);box-shadow:inset 0 0 0 3px var(--surface-soft)}
:root[data-contrast=normal] .mode-option:has(input:focus-visible){outline-color:var(--focus)}

/* Message writing, reading and group chat use the same layered surfaces. */
:root[data-contrast=normal] :is(.message-field textarea,.message-preview){background:var(--surface-soft);border-top-color:var(--accent)}
:root[data-contrast=normal] :is(.message-paper,.chat-log){background:var(--surface);border-top-color:var(--accent)}
:root[data-contrast=normal] .message-view-switch button,
:root[data-contrast=normal] .message-format-tools button{background:var(--surface);color:var(--ink)}
:root[data-contrast=normal] .message-view-switch button[aria-pressed=true],
:root[data-contrast=normal] .message-view-switch button:hover:not(:disabled),
:root[data-contrast=normal] .message-format-tools button:hover:not(:disabled){background:var(--surface-soft);color:var(--ink)}
:root[data-contrast=normal] .message-view-switch button[aria-pressed=true]{box-shadow:inset 0 -3px 0 var(--accent)}
:root[data-contrast=normal] .own-message{background:var(--surface-soft);border-right-color:var(--accent)}
:root[data-contrast=normal] .chat-message-meta{border-color:var(--line-soft)}
:root[data-contrast=normal] .chat-notice{border-color:var(--line-soft)}
:root[data-contrast=normal] :is(.identity-chip,.peer-chip,.attachment-card,.attachment-draft){background:var(--surface);color:var(--ink)}
:root[data-contrast=normal] .identity-chip:hover{background:var(--surface-active)}
:root[data-contrast=normal] .peer-chip[data-self=true]{background:var(--lime);color:var(--accent-ink);border-color:var(--accent-ink)}
:root[data-contrast=normal] .peer-chip:is([data-status=connecting],[data-status=reconnecting]){background:var(--surface);color:var(--muted)}
:root[data-contrast=normal] .attachment-card{border-left-color:var(--accent)}
:root[data-contrast=normal] .status-dot{background:var(--lime);box-shadow:0 0 0 1px var(--ink)}
:root[data-contrast=normal] .session-count{background:var(--surface-soft)}
:root[data-contrast=normal] .session-toolbar .message-actions :is(.leave-button,.end-button){background:var(--surface);color:var(--ink);outline-color:var(--ink)}
:root[data-contrast=normal] .session-toolbar .message-actions :is(.leave-button,.end-button):hover{background:var(--danger-surface);color:var(--danger)}
:root[data-contrast=normal] .markdown-content :is(blockquote,th){background:var(--surface-soft)}
:root[data-contrast=normal] .markdown-content blockquote{border-left-color:var(--accent)}
:root[data-contrast=normal] .markdown-content pre{background:var(--surface-soft);color:var(--ink)}
:root[data-contrast=normal] :is(.markdown-content a,.peer-contact-website,.pairing-help a){color:var(--link)}
:root[data-contrast=normal] :is(.voice-panel,.audio-player){background:var(--surface)}
:root[data-contrast=normal] :is(.voice-mode-choice,.connection-relay-option) input{background:var(--surface)}
:root[data-contrast=normal] :is(.voice-mode-choice,.connection-relay-option) input:checked{background:var(--ink);box-shadow:inset 0 0 0 3px var(--surface-soft)}
:root[data-contrast=normal] .composer-option-toggle[aria-expanded=true],
:root[data-contrast=normal] .composer-option-toggle[aria-expanded=true]:hover{background:var(--surface-soft);color:var(--ink)}
:root[data-contrast=normal] progress{background:var(--surface-soft);color:var(--accent)}
:root[data-contrast=normal] progress::-webkit-progress-bar{background:var(--surface-soft)}
:root[data-contrast=normal] progress::-webkit-progress-value{background:var(--accent)}
:root[data-contrast=normal] progress::-moz-progress-bar{background:var(--accent)}
:root[data-contrast=normal] .audio-seek::-webkit-slider-thumb{background:var(--accent)}
:root[data-contrast=normal] .audio-seek::-moz-range-thumb{background:var(--accent)}

/* Links, nearby sharing and receive dialogs inherit one consistent palette. */
:root[data-contrast=normal] .short-link-form{background:var(--surface-soft);border-top-color:var(--accent)}
:root[data-contrast=normal] .short-link-result{background:var(--surface);border-top-color:var(--accent)}
:root[data-contrast=normal] .short-link-copy-row input{background:var(--surface-soft)}
:root[data-contrast=normal] .short-link-history-destination{color:var(--muted)}
:root[data-contrast=normal] .short-link-history-item[data-expired=true] .short-link-history-status{color:var(--muted)}
:root[data-contrast=normal] .upload-dropzone{background:var(--surface-soft);border-top-color:var(--accent)}
:root[data-contrast=normal] .upload-dropzone:focus-within,
:root[data-contrast=normal] .upload-dropzone.is-dragover,
:root[data-contrast=normal] .upload-panel.is-dragover .upload-dropzone{background:var(--surface-active)}
:root[data-contrast=normal] .nearby-panel{background:var(--surface)}
:root[data-contrast=normal] :is(.nearby-status,.nearby-empty,.nearby-note,.upload-limits,.upload-copy p){color:var(--muted)}
:root[data-contrast=normal] .nearby-peers button{background:var(--surface-soft);color:var(--ink)}
:root[data-contrast=normal] .nearby-peers button:hover:not(:disabled){background:var(--surface-active);color:var(--ink)}
:root[data-contrast=normal] .nearby-peer-device{opacity:1;color:var(--muted)}
:root[data-contrast=normal] .nearby-peer-action{color:var(--ink)}
:root[data-contrast=normal] .compose-view[data-kind=upload] .attachment-draft,
:root[data-contrast=normal] .upload-view .attachment-card{background:var(--surface)}
:root[data-contrast=normal] :is(.nearby-code,.pairing-confirm-panel){background:var(--surface-soft)}
:root[data-contrast=normal] .pairing-code-panel input{background:var(--surface-soft)}

/* Keep large overlays calmer than the surrounding page and distinguish errors. */
:root[data-contrast=normal] dialog{background:var(--surface);box-shadow:6px 6px 0 var(--shadow),8px 8px 0 var(--ink)}
:root[data-contrast=normal] dialog::backdrop{background:rgb(8 13 25 / .5)}
:root[data-contrast=normal] :is(.identity-fingerprint,.identity-dialog .identity-recovery-output,.identity-backup-guide,.message-import-confirm){background:var(--surface-soft);color:var(--ink)}
:root[data-contrast=normal] .identity-setup{background:var(--bg)}
:root[data-contrast=normal] .identity-dialog input[type=file]::file-selector-button{background:var(--surface-soft);color:var(--ink)}
:root[data-contrast=normal] :is(#identity-contact-verified,.peer-contact>.peer-contact-label){align-self:flex-start;background:var(--lime);color:var(--accent-ink);border:1px solid var(--accent-ink);padding:2px 7px}
:root[data-contrast=normal] .peer-profile>.peer-contact-label{color:var(--muted)}
:root[data-contrast=normal] .privacy-item h3{color:var(--ink)}
:root[data-contrast=normal] .feedback-status[data-state=success]{background:var(--lime);color:var(--accent-ink);border-color:var(--accent-ink)}
:root[data-contrast=normal] .toast{background:var(--surface-soft);color:var(--ink);border-color:var(--ink);box-shadow:4px 4px 0 var(--shadow)}
:root[data-contrast=normal] .error-message,
:root[data-contrast=normal] body[data-phase=live] .chat-status.error-message{background:var(--danger-surface);color:var(--danger);border-color:var(--danger)}
:root[data-contrast=normal] [aria-invalid=true]{border-color:var(--danger)}
:root[data-contrast=normal] .identity-change-confirm{background:var(--danger-surface);border-color:var(--danger)}

/* Guides keep their reading layout, with color carried by links and calls to action. */
:root[data-contrast=normal] .guide-header .guide-main-nav>a,
:root[data-contrast=normal] .guide-nav-toggle{background:var(--surface);color:var(--ink)}
:root[data-contrast=normal] .guide-header .guide-main-nav>a[aria-current=page],
:root[data-contrast=normal] .guide-header .guide-main-nav>a:hover,
:root[data-contrast=normal] .guide-nav-toggle:is(:hover,[aria-expanded=true]){background:var(--surface-soft);color:var(--ink)}
:root[data-contrast=normal] .guide-header .guide-main-nav>a[aria-current=page]{box-shadow:inset 0 -3px 0 var(--accent)}
:root[data-contrast=normal] .guide-shell :is(.breadcrumbs,.eyebrow,.fine-print,.explanation-hint){color:var(--muted)}
:root[data-contrast=normal] .guide-shell :is(article a:not(.primary-link),.contents a,.related a){color:var(--link)}
:root[data-contrast=normal] .guide-shell :is(.contents,.related){border-color:var(--accent)}
:root[data-contrast=normal] .end-cta{background:var(--surface-soft);border-top-color:var(--accent)}
:root[data-contrast=normal] .answer{border-top-color:var(--line-soft)}
:root[data-contrast=normal] .route-noscript nav a{background:var(--surface)}
:root[data-contrast=normal] .route-noscript nav a:hover{background:var(--surface-soft);color:var(--ink)}

@supports (appearance:base-select){
 :root[data-contrast=normal] .message-format-choice select::picker(select),
 :root[data-contrast=normal] .message-format-choice select option{background:var(--surface);color:var(--ink)}
 :root[data-contrast=normal] .message-format-choice select option:is(:checked,:hover,:focus){background:var(--surface-soft);color:var(--ink)}
}

/* Disabled controls must win over selected, hover and primary variants. */
:root[data-contrast=normal] button:disabled,
:root[data-contrast=normal] button:disabled:hover{background:var(--surface);color:var(--muted);border-color:var(--line-soft);box-shadow:none}


/* Keep the invitation card's ink outline and offset stamp from the color study. */
:root[data-contrast=normal] .group-intro{background:var(--surface-soft);border-color:var(--ink);--group-shadow:var(--shadow)}
:root[data-contrast=normal][data-theme=light] .group-intro{--group-shadow:var(--ink)}
