/* Palette layer (owner decision 2026-11-14, docs/PALETTE_RODEO.md). Loaded after every other public stylesheet.
   Audio Protocol: the yellow-green as a gradient ("Sárga fény"): a touch of green, #E9FF48 in the middle, a lighter yellow,
   with dark text as before (at least 12.7:1). Visual Protocol: teal, deep petrol into sea teal, with light text (at
   least 5.1:1). The colours drift only on hover and on the footer band, never with reduced motion or Motion off.
   Colour values are tokens in tokens.css; the admin and the private client pages keep their own look. */

:root{
 --palette-audio-button:linear-gradient(100deg,var(--bang-audio-lead) 0%,var(--bang-audio) 48%,var(--bang-audio-light) 100%);
 --palette-audio-flow:linear-gradient(100deg,var(--bang-audio-lead) 0%,var(--bang-audio) 22%,var(--bang-audio-light) 46%,var(--bang-audio) 72%,var(--bang-audio-lead) 100%);
 --palette-audio-band:linear-gradient(118deg,var(--bang-audio-start) 0%,var(--bang-audio-lead) 30%,var(--bang-audio) 62%,var(--bang-audio-light) 100%);
 --palette-audio-glow:linear-gradient(90deg,var(--bang-audio),var(--bang-audio-glow));
 --palette-visual-button:linear-gradient(100deg,var(--bang-visual-petrol) 0%,var(--bang-visual) 48%,var(--bang-visual-light) 100%);
 --palette-visual-flow:linear-gradient(100deg,var(--bang-visual-petrol) 0%,var(--bang-visual) 22%,var(--bang-visual-light) 46%,var(--bang-visual) 72%,var(--bang-visual-petrol) 100%);
 --palette-visual-band:linear-gradient(118deg,var(--bang-visual-deep) 0%,var(--bang-visual-petrol) 30%,var(--bang-visual) 62%,var(--bang-visual-light) 100%);
}

/* ---- Audio: buttons that were flat yellow get the gradient; on hover the colours slide across. ---- */
body:not(.visual-theme) .skip,
#mast .nav-cta,
.hybrid-hero-actions .solid-action:not(.visual-action),
.home-hybrid .service-row:not(.visual-service) .service-copy .solid-action,
.journal-article.journal-audio>footer .solid-action,
.home-hybrid .hybrid-collection-head:not(.hybrid-video-heading) .hybrid-text-link,
.crossover-controls>div:not(.crossover-visual-control) button,
button.submit,
body:not(.visual-theme) .hybrid-consent-actions .solid-action,
.not-found-links .solid-action:first-child,
dialog:not(:has(.visual-player)) .modal-foot .similar-project,
.dp-button:not(.dp-button--plain):not(.visual-theme .dp-button):not(.dp-package .dp-button),
.details-hybrid .dp-package:is(:hover,:focus-within) .dp-button,
.proposal-acceptance .solid-action,
.showcase-section .solid-action{
 background-color:var(--bang-audio);background-image:var(--palette-audio-flow);background-size:220% 100%;background-position:0% 50%;
 border-color:transparent;color:var(--bang-ink);transition:background-position .7s var(--bang-ease),transform .25s var(--bang-ease)
}
:is(#mast .nav-cta,.hybrid-hero-actions .solid-action:not(.visual-action),.home-hybrid .service-row:not(.visual-service) .service-copy .solid-action,.journal-article.journal-audio>footer .solid-action,.home-hybrid .hybrid-collection-head:not(.hybrid-video-heading) .hybrid-text-link,
 .crossover-controls>div:not(.crossover-visual-control) button,button.submit,body:not(.visual-theme) .hybrid-consent-actions .solid-action,
 dialog:not(:has(.visual-player)) .modal-foot .similar-project,.dp-button:not(.dp-button--plain):not(.visual-theme .dp-button):not(.dp-package .dp-button),
 .details-hybrid .dp-package:is(:hover,:focus-within) .dp-button,.proposal-acceptance .solid-action,.showcase-section .solid-action):is(:hover,:focus-visible){
 background-color:var(--bang-audio);background-image:var(--palette-audio-flow);background-position:100% 50%;color:var(--bang-ink)
}

/* Audio tabs, filters, play marks, the service routes. */
.details-hybrid:not(.visual-theme) .dp-tabs a[aria-current],
.details-hybrid:not(.visual-theme) .dp-filters button[aria-pressed=true]{background:var(--palette-audio-button);border-color:var(--bang-audio);color:var(--bang-ink)}
.details-hybrid:not(.visual-theme) .dp-tabs a:not([aria-current]):hover,
.details-hybrid:not(.visual-theme) .dp-filters button[aria-pressed="false"]:hover,
.details-hybrid:not(.visual-theme) .dp-expand-controls button:hover{background:var(--bang-audio-wash);border-color:var(--bang-audio-rule);color:var(--bang-audio-text)}
.dp-tile:not([data-project^="visual-"]):not(.visual-theme .dp-tile) .dp-play,
.hybrid-audio-grid .project-play,
.dp-voice[aria-pressed="true"] .dp-voice-symbol,
.enquiry-sent-mark{background:var(--palette-audio-button);color:var(--bang-ink)}
.home-hybrid .service-route:is(:hover,:focus-visible){background:var(--palette-audio-button);color:var(--bang-ink)}
.hybrid-slogan .hybrid-signature{color:var(--bang-audio);background:var(--palette-audio-glow);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
body:not(.visual-theme) .read-progress{background:var(--bang-audio-rule)}

/* The Audio footer: one soft yellow-green band, drifting slowly. */
body:not(.visual-theme) #foot{background:var(--palette-audio-band);background-size:180% 180%;background-position:0% 50%;color:var(--bang-ink);animation:palette-drift 18s ease-in-out infinite alternate}
body:not(.visual-theme) #foot :is(a,button):hover{text-decoration:underline;text-underline-offset:3px}

/* ---- Visual: the teal, light text. ---- */
.hybrid-hero-actions .visual-action,
.home-hybrid .hybrid-collection-head.hybrid-video-heading .hybrid-text-link,
.home-hybrid .visual-service .service-copy .solid-action,
.crossover-controls .crossover-visual-control button,
.visual-theme .skip,
.visual-theme .hybrid-consent-actions .solid-action,
.visual-theme .dp-button:not(.dp-button--plain),
dialog:has(.visual-player) .modal-foot .similar-project,
.not-found-links .solid-action[href^="/animated-video"],
.journal-empty .solid-action,
.journal-article:not(.journal-audio)>footer .solid-action,
.journal-video .solid-action,
:is(.visual-theme,.visual-service,.hybrid-video-grid,.hybrid-video-heading,.visual-player) :is(.solid-action,button.submit){
 background-color:var(--bang-visual);background-image:var(--palette-visual-flow);background-size:220% 100%;background-position:0% 50%;
 border-color:transparent;color:var(--bang-visual-on);transition:background-position .7s var(--bang-ease),transform .25s var(--bang-ease)
}
:is(.hybrid-hero-actions .visual-action,.home-hybrid .hybrid-collection-head.hybrid-video-heading .hybrid-text-link,
 .home-hybrid .visual-service .service-copy .solid-action,.crossover-controls .crossover-visual-control button,
 .visual-theme .skip,.visual-theme .hybrid-consent-actions .solid-action,.visual-theme .dp-button:not(.dp-button--plain),
 dialog:has(.visual-player) .modal-foot .similar-project,.not-found-links .solid-action[href^="/animated-video"],
 .journal-empty .solid-action,.journal-article:not(.journal-audio)>footer .solid-action,.journal-video .solid-action,
 :is(.visual-theme,.visual-service,.hybrid-video-grid,.hybrid-video-heading,.visual-player) :is(.solid-action,button.submit)) *{color:inherit}
:is(.hybrid-hero-actions .visual-action,.home-hybrid .hybrid-collection-head.hybrid-video-heading .hybrid-text-link,
 .home-hybrid .visual-service .service-copy .solid-action,.crossover-controls .crossover-visual-control button,
 .visual-theme .hybrid-consent-actions .solid-action,.visual-theme .dp-button:not(.dp-button--plain),
 dialog:has(.visual-player) .modal-foot .similar-project,.not-found-links .solid-action[href^="/animated-video"],
 .journal-empty .solid-action,.journal-article:not(.journal-audio)>footer .solid-action,.journal-video .solid-action,
 :is(.visual-theme,.visual-service,.hybrid-video-grid,.hybrid-video-heading,.visual-player) :is(.solid-action,button.submit)):is(:hover,:focus-visible){
 background-color:var(--bang-visual);background-image:var(--palette-visual-flow);background-position:100% 50%;border-color:transparent;color:var(--bang-visual-on)
}

/* Visual tabs, filters, play and arrow marks. */
.visual-theme .dp-tabs a[aria-current],
.visual-theme .dp-filters button[aria-pressed=true]{background:var(--palette-visual-button);border-color:var(--bang-visual);color:var(--bang-visual-on)}
.visual-theme .dp-tabs a:not([aria-current]):hover,
.visual-theme .dp-filters button[aria-pressed="false"]:hover{background:var(--bang-visual-wash);border-color:var(--bang-visual);color:var(--bang-visual-ink)}
.hybrid-video-grid .project-play,
.js-motion .hybrid-video-grid .project-image:hover .project-play,
[data-project^="visual-"] .dp-play,
.visual-theme .dp-play,
.studio-story-arrow{background:var(--palette-visual-button);color:var(--bang-visual-on)}
.studio-story-arrow *{color:inherit;stroke:currentColor}
.home-hybrid a.hybrid-visual-art::before{background:var(--bang-visual) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M4 20 20 4M5 4h15v15' stroke='%23f2fbfa' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/22px 22px no-repeat}
.studio-story-mark,.journal-card-mark{color:var(--bang-visual-glow)}
.visual-theme .equalizer i{background:var(--bang-visual-glow)}
.visual-theme .read-progress{background:var(--bang-visual-light)}

/* The Visual footer: the same band in teal. */
.visual-theme #foot{background:var(--palette-visual-band);background-size:180% 180%;background-position:0% 50%;color:var(--bang-visual-on);animation:palette-drift 18s ease-in-out infinite alternate}
.visual-theme #foot :is(a,button,address,p,span,small){color:var(--bang-visual-on)}
.visual-theme #foot :is(a,button):hover{color:var(--bang-visual-on);text-decoration:underline;text-underline-offset:3px}
.visual-theme #foot :focus-visible{outline-color:var(--bang-visual-on)}

@keyframes palette-drift{to{background-position:100% 50%}}

/* No drifting colours with reduced motion or with the site's Motion switch off. */
@media (prefers-reduced-motion:reduce){
 #foot{animation:none!important;background-position:0% 50%!important}
 .skip,.nav-cta,.solid-action,.hybrid-text-link,.crossover-controls button,button.submit,.dp-button,.visual-action{transition:none!important}
}
.motion-off #foot{animation:none!important;background-position:0% 50%!important}
.motion-off :is(.skip,.nav-cta,.solid-action,.hybrid-text-link,.crossover-controls button,button.submit,.dp-button,.visual-action){transition:none!important}
