/*
Theme Name: Wez Allard — Music & Sound Design
Theme URI: https://wezallardmusic.co.uk/
Author: Wez Allard / ChatGPT
Description: Responsive cinematic portfolio for a composer and sound designer, with an audio audition player, editable logo and colours.
Version: 0.7.26
Requires at least: 6.3
Requires PHP: 7.4
License: GPL-2.0-or-later
Text Domain: wez-allard
*/

:root{--purple:#2c245b;--purpledeep:#1a103c;--admiral:#373176;--midpurple:#6241cf;--fuchsia:#ee00ad;--yellow:#ffe849;--white:#fff;--pale:#f8f7ff;--line:#e9e6f5;--muted:#665e88;--navh:66px;--playerh:119px;--filters:57px}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:#fff;color:var(--purpledeep);font:14px/1.6 'DM Sans',Arial,sans-serif;overflow-x:hidden}
button,a{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--fuchsia);outline-offset:3px}::-webkit-scrollbar{width:8px;height:5px}::-webkit-scrollbar-thumb{background:#bab2d9;border-radius:8px}
.shell{width:min(1370px,calc(100% - 78px));margin:auto}
.eyebrow{color:#6631f5;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.22em}
.site-nav{height:var(--navh);position:sticky;top:0;z-index:100;background:#ffffffeb;backdrop-filter:blur(22px);border-bottom:1px solid #eeeaf6}
.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:26px;height:100%}.brand{display:flex;align-items:center;gap:10px;white-space:nowrap}.brand-mark{width:49px;height:48px;display:grid;place-items:center;position:relative;font:700 45px/.9 Georgia,serif;letter-spacing:-.13em;color:var(--purpledeep);text-shadow:3px 1px 0 #9c2dd0}.brand-mark::after{content:'';width:5px;height:23px;background:var(--fuchsia);position:absolute;left:28px;top:10px;transform:rotate(-23deg);opacity:.8}.brand-title{font:800 16px/1.1 Manrope,Arial,sans-serif;letter-spacing:.16em}.brand-sub{font:600 8px/1.7 'DM Sans',sans-serif;text-transform:uppercase;color:#79719d;letter-spacing:.23em}.links{display:flex;align-items:center;gap:31px}.links a{font-weight:800;font-size:10px;letter-spacing:.12em;color:#746f99;text-transform:uppercase;padding:13px 0;white-space:nowrap}.links a:hover,.links a.active{color:#6531f5}.links a.active:after{content:'';height:2px;display:block;background:#763dff}.links .contact-link{background:var(--yellow);color:var(--purpledeep);padding:12px 18px;border-radius:5px}.links .contact-link:hover{color:var(--purpledeep);background:#ffe027}.links .contact-link:after{display:none}.menu-toggle{display:none;background:transparent;border:0;color:var(--purpledeep);font-size:28px;padding:2px 7px;line-height:1}
.global-player{position:sticky;top:var(--navh);z-index:90;padding:0 18px;background:#fff9;backdrop-filter:blur(8px)}.player-inner{width:min(1400px,100%);margin:auto;min-height:var(--playerh);display:grid;grid-template-columns:minmax(240px,.9fr) minmax(290px,1.2fr) minmax(340px,1fr);gap:24px;align-items:center;padding:16px 25px;background:linear-gradient(100deg,#28214f,#37306f 65%,#29204f);border-radius:0 0 13px 13px;color:#fff;box-shadow:0 11px 24px #24205416}.now-playing{display:flex;align-items:center;gap:13px;min-width:0}.album-square{flex-shrink:0;width:65px;height:65px;border-radius:5px;background:linear-gradient(135deg,#4f2caa,#be62c8 47%,#fda458);overflow:hidden;position:relative}.album-square:after{content:'';position:absolute;right:-18px;bottom:-26px;width:65px;height:65px;border-radius:50%;background:#ffe5a2a8;filter:blur(2px)}.album-square span{position:absolute;top:5px;left:8px;font-size:8px;letter-spacing:.12em}.track-meta{min-width:0}.small-label{font:700 9px/1.5 'DM Sans',Arial,sans-serif;letter-spacing:.2em;color:var(--yellow);text-transform:uppercase}.song-title{font:700 13px/1.4 Manrope,Arial,sans-serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.song-info{color:#c9c5e7;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playback{display:flex;gap:13px;align-items:center;min-width:0}.round-play{display:grid;place-items:center;flex:none;width:49px;height:49px;border-radius:50%;border:0;background:#fff;color:var(--purpledeep);box-shadow:0 5px 14px #120e3d50}.round-play:hover{background:var(--yellow)}.round-play svg{width:17px;height:17px}.timeline{min-width:0;flex:1}.waveform{height:36px;display:flex;align-items:center;gap:2px;touch-action:none;cursor:pointer;user-select:none}.wavebar{flex:1;min-width:1px;border-radius:8px;background:#8581ac}.wavebar.past{background:#ef18c5}.timestamps{display:flex;justify-content:space-between;font-variant-numeric:tabular-nums;font-size:10px;color:#f4edf6}.mix-controls{min-width:0;padding-left:23px;border-left:1px solid #a29ac6}.mix-head{display:flex;align-items:center;gap:10px;justify-content:space-between}.mix-head .small-label{color:#dcd5f8}.tiny-note{color:#9f99bd;font-size:8px;white-space:nowrap}.mode-buttons{display:flex;gap:7px;margin-top:8px}.mode-buttons button{flex:1;padding:9px 7px;min-height:38px;font-weight:700;font-size:10px;color:#fff;background:transparent;border:1px solid #786fa8;border-radius:5px;white-space:nowrap}.mode-buttons button:hover{border-color:#fff}.mode-buttons button.selected{background:var(--yellow);color:#21193f;border-color:var(--yellow)}.player-expand{display:none}
.hero{position:relative;overflow:hidden;background:linear-gradient(#fff 0,#fff 80%,#fdfcff 100%);min-height:480px}.hero-inner{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:center;gap:8px;padding-top:38px;padding-bottom:48px}.hero-copy{position:relative;z-index:2;max-width:730px}.hero h1{font:800 clamp(43px,4.8vw,76px)/1.045 Manrope,Arial,sans-serif;letter-spacing:-.066em;margin:16px 0 17px}.hero h1 em{color:var(--fuchsia);font-style:normal}.hero p{font-size:16px;color:#5a527e;line-height:1.67;max-width:550px}.hero-links{display:flex;align-items:center;flex-wrap:wrap;gap:22px;margin-top:24px}.primary-cta{display:inline-flex;align-items:center;justify-content:center;gap:15px;background:var(--yellow);color:var(--purpledeep);border:0;border-radius:5px;text-transform:uppercase;font:800 11px Manrope,Arial,sans-serif;letter-spacing:.055em;padding:15px 20px;min-height:46px;box-shadow:0 4px 14px #ffd92820}.primary-cta:hover{background:#ffdf2a}.text-cta{padding:10px 1px;border-bottom:1.5px solid #6d51bb;font:800 10px Manrope,Arial,sans-serif;text-transform:uppercase;letter-spacing:.12em}.text-cta:hover{color:#622fee}.hero-visual{width:113%;transform:translate(0,1%);align-self:stretch;display:flex;align-items:center;overflow:visible}.hero-visual img{display:block;width:100%;height:auto;object-fit:contain;mix-blend-mode:multiply;pointer-events:none;user-select:none}
.collection-anchor{scroll-margin-top:185px}.filters-wrap{position:sticky;top:calc(var(--navh) + var(--playerh) - 8px);z-index:75;border-bottom:1px solid #e3e0ed;background:#ffffffef;backdrop-filter:blur(16px)}.filters{display:flex;align-items:center;gap:27px;height:var(--filters);white-space:nowrap;overflow-x:auto;scrollbar-width:none}.filters::-webkit-scrollbar{display:none}.filters button{height:100%;border:0;border-bottom:3px solid transparent;white-space:nowrap;padding:0;background:transparent;color:#62597e;font:700 11px 'DM Sans',sans-serif}.filters button.active{color:var(--purpledeep);border-color:#4f29a9}.filters button:hover{color:#6935e0}
.work{padding-top:35px;padding-bottom:84px}.work-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:20px}.work-heading .eyebrow:before{content:'';display:inline-block;width:25px;height:3px;background:var(--fuchsia);vertical-align:middle;margin-right:10px}.work-heading h2{font:800 clamp(29px,3vw,43px)/1.2 Manrope,Arial,sans-serif;letter-spacing:-.058em;margin:2px 0 0}.work-heading p{font-size:10px;color:#776e9d;text-transform:uppercase;letter-spacing:.07em}.masonry{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:21px;align-items:start}.project-card{min-width:0;overflow:hidden;border:1px solid #e9e8f3;border-radius:8px;background:white;box-shadow:0 6px 21px #29205c10;transition:transform .2s,box-shadow .2s}.project-card:hover{transform:translateY(-4px);box-shadow:0 15px 30px #29205c20}.project-card .art{position:relative;width:100%;height:240px;cursor:pointer;overflow:hidden;isolation:isolate;background:#2a2054}.project-card .art.tall{height:275px}.project-card .art.short{height:220px}.featured-image{width:100%;height:100%;background-position:center;background-repeat:no-repeat;background-size:cover;transition:transform .45s}.project-card:hover .featured-image{transform:scale(1.04)}.generated-art{position:absolute;inset:0;overflow:hidden;background:radial-gradient(circle at 75% 18%,#e399ec66,transparent 34%),linear-gradient(145deg,#6240b5,#1b204f 64%,#2a173f);color:white}.art-ship{background:radial-gradient(circle at 72% 25%,#ffe48b96,transparent 24%),linear-gradient(140deg,#5d6fc0,#162259 60%,#151a3c)}.art-medusa{background:radial-gradient(circle at 72% 33%,#f684c7aa,transparent 36%),linear-gradient(130deg,#6f2c99,#1b1c55 72%)}.art-myth{background:radial-gradient(circle at 73% 22%,#ffe176a0,transparent 24%),linear-gradient(145deg,#ed76a0,#43217c 67%,#1b1749)}.art-characters{background:radial-gradient(circle at 36% 30%,#fd58c688,transparent 25%),linear-gradient(140deg,#7544c8,#20205c)}.art-mars{background:radial-gradient(circle at 75% 33%,#ff9d708e,transparent 25%),linear-gradient(125deg,#ae417c,#352265 66%,#191841)}.art-games{background:radial-gradient(circle at 60% 24%,#83c4ff94,transparent 27%),linear-gradient(145deg,#3268ab,#262365 70%,#191634)}.pattern-ring{position:absolute;right:-18%;top:-22%;width:85%;aspect-ratio:1;border-radius:50%;border:2px solid #e2cbff90;box-shadow:0 0 0 22px #ffcff120,0 0 0 60px #d3c8ff21,0 0 0 92px #dccdff12}.pattern-star{position:absolute;right:18%;top:13%;font-size:85px;color:#fff3a5bb}.art-brand{position:absolute;top:18px;left:19px;color:#ffffffdc;letter-spacing:.18em;font:700 9px DM Sans,Arial,sans-serif}.art-heading{position:absolute;bottom:24px;left:20px;z-index:3;color:#fff;text-transform:uppercase;letter-spacing:-.055em;font:800 clamp(22px,2.5vw,36px)/1.03 Manrope,sans-serif;text-shadow:0 4px 14px #08042796}.art-heading .accent{color:#ffe849}
.preview-control{position:absolute;z-index:12;right:18px;bottom:17px;width:49px;height:49px;display:grid;place-items:center;background:white;color:#201642;border-radius:50%;border:0;box-shadow:0 7px 20px #120b3b55;transition:transform .16s,background .16s}.preview-control:hover{transform:scale(var(--wez-parallax-scale, 1.08));background:#fff28b}.preview-control.playing{background:var(--yellow)}.preview-control svg{height:20px;width:20px}.card-text{padding:13px 17px 15px}.card-tag{display:flex;align-items:center;justify-content:space-between;color:#7434df;text-transform:uppercase;letter-spacing:.12em;font:800 9px DM Sans,sans-serif}.card-name{border:0;padding:0;margin:5px 0 3px;background:none;color:#261c4b;font:800 17px/1.3 Manrope,sans-serif;text-align:left}.card-name:hover{color:#8c25de}.card-desc{font-size:12px;margin:0;color:#6d648d}.card-bottom{margin-top:12px;padding-top:11px;border-top:1px solid #ebe8f5;display:flex;justify-content:space-between;align-items:center;gap:10px;color:#746a90;font-size:10px}.card-bottom button{border:0;background:none;color:#702cc8;font-weight:800;white-space:nowrap}.equalizer{display:flex;align-items:end;gap:2px;height:13px}.equalizer i{width:3px;height:5px;background:var(--fuchsia);border-radius:1px}.playing-card .equalizer i{animation:eq .6s ease-in-out infinite alternate}.playing-card .equalizer i:nth-child(2){animation-delay:.15s}.playing-card .equalizer i:nth-child(3){animation-delay:.3s}.playing-card .equalizer i:nth-child(4){animation-delay:.08s}@keyframes eq{to{height:12px}}
.about-section{padding:72px 0;background:linear-gradient(115deg,#f7f4ff,#fff 65%);border-top:1px solid #eae7f5}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:50px}.about-section h2{font:800 clamp(26px,3.1vw,44px)/1.15 Manrope,sans-serif;letter-spacing:-.06em;margin:15px 0}.about-section p{color:#625983;line-height:1.9;max-width:580px}.about-stats{display:flex;gap:25px;flex-wrap:wrap;margin-top:20px}.stat strong{display:block;color:#732bc4;font:800 19px Manrope,sans-serif}.stat span{text-transform:uppercase;letter-spacing:.08em;font-size:9px;color:#756a94}.contact-section{text-align:center;background:#f5f2ff}.contact-section p{margin:10px auto 23px}.footer{padding:23px 0;border-top:1px solid #e8e5f0}.footer-inner{display:flex;justify-content:space-between;gap:20px;color:#756a92;font-size:10px}
.modal-backdrop{position:fixed;inset:0;background:#170c3dcf;backdrop-filter:blur(7px);z-index:200;display:none;align-items:center;justify-content:center;padding:20px}.modal-backdrop.open{display:flex}.modal{background:white;border-radius:14px;padding:30px;width:min(530px,100%);box-shadow:0 30px 100px #09042b77}.modal-top{display:flex;align-items:center;justify-content:space-between}.modal h2{margin:13px 0;font:800 29px Manrope,sans-serif}.modal p{color:#625b87}.modal button.close{font-size:25px;border:0;background:#f0ecff;color:#211545;width:38px;height:38px;border-radius:50%}.modal .small-label{color:#6733db}.toast{position:fixed;bottom:24px;right:20px;padding:10px 15px;background:#211842;color:#ffe849;border-radius:6px;z-index:250;opacity:0;pointer-events:none;transition:opacity .2s}.toast.show{opacity:1}
@media(max-width:1150px){.shell{width:calc(100% - 48px)}.player-inner{grid-template-columns:minmax(185px,.86fr) minmax(225px,1.05fr) minmax(260px,1fr);gap:14px;padding:14px}.mix-controls{padding-left:14px}.hero-inner{grid-template-columns:1.1fr 1fr}.hero h1{font-size:clamp(42px,5vw,61px)}.links{gap:16px}}
@media(max-width:900px){:root{--playerh:164px}.links a:not(.contact-link){display:none}.menu-toggle{display:block}.links{margin-left:auto}.player-inner{grid-template-columns:1fr 1.1fr;gap:8px 24px}.now-playing{grid-column:1;grid-row:1}.playback{grid-column:2;grid-row:1}.mix-controls{grid-column:1/3;grid-row:2;border-left:0;padding:0}.mix-head{display:none}.mode-buttons{margin-top:0}.hero-inner{grid-template-columns:1fr .9fr}.hero-visual{width:118%}.masonry{grid-template-columns:repeat(2,minmax(0,1fr))}.links.open{position:absolute;right:24px;top:60px;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:11px 20px;box-shadow:0 12px 45px #19113438;border:1px solid #ece7fa;background:white;border-radius:10px;width:205px}.links.open a:not(.contact-link){display:block;padding:12px 5px}.links.open .contact-link{margin-top:6px;text-align:center}.links.open a.active:after{display:none}}
@media(max-width:720px){:root{--navh:70px;--playerh:186px;--filters:57px}.shell{width:calc(100% - 32px)}.brand-mark{width:39px;height:41px;font-size:39px}.brand-title{font-size:12px}.brand-sub{font-size:7px;letter-spacing:.16em}.links{gap:6px}.links .contact-link{font-size:10px;padding:10px 11px}.menu-toggle{font-size:28px}.global-player{padding:0 12px;background:#fff}.player-inner{width:100%;display:grid;grid-template-columns:1fr;gap:7px;padding:14px 14px 13px;min-height:0;border-radius:13px}.now-playing{grid-column:1;grid-row:1}.album-square{width:58px;height:58px}.track-meta .song-title{font-size:12px;white-space:normal;line-height:1.25;max-height:36px;overflow:hidden}.song-info{display:none}.small-label{font-size:8px}.playback{grid-column:1;grid-row:2}.round-play{width:43px;height:43px}.waveform{height:31px}.mix-controls{grid-column:1;grid-row:3}.mode-buttons button{min-height:36px;padding:7px 5px;font-size:10px}.player-expand{display:none}.global-player.is-compact:not(.force-open) .player-inner{padding:8px 12px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}.global-player.is-compact:not(.force-open) .album-square{width:36px;height:36px}.global-player.is-compact:not(.force-open) .now-playing{grid-column:1;grid-row:1}.global-player.is-compact:not(.force-open) .song-info,.global-player.is-compact:not(.force-open) .small-label{display:none}.global-player.is-compact:not(.force-open) .playback{grid-column:2;grid-row:1}.global-player.is-compact:not(.force-open) .playback .timeline,.global-player.is-compact:not(.force-open) .mix-controls{display:none}.global-player.is-compact:not(.force-open) .round-play{width:38px;height:38px}.global-player.is-compact:not(.force-open) .player-expand{display:none}.global-player.is-compact:not(.force-open) .song-title{font-size:11px;white-space:nowrap}.global-player.is-compact:not(.force-open) .player-expand{display:block;position:absolute;right:62px;top:14px;border:0;background:transparent;color:#fff;font-size:16px}.global-player.force-open .player-expand{display:block;position:absolute;right:9px;top:7px;border:0;background:transparent;color:#fff}.hero-inner{display:flex;flex-direction:column;align-items:stretch;gap:0;padding:37px 0 8px}.hero-copy{max-width:none}.hero h1{font-size:clamp(41px,10vw,66px);line-height:1.08;letter-spacing:-.066em;margin:13px 0}.hero p{font-size:15px;line-height:1.65;margin:12px 0}.hero-links{gap:12px;margin-top:22px}.hero-links .primary-cta{min-height:49px}.hero-visual{width:112%;max-width:none;transform:translateX(-5%);margin-top:-4px;margin-bottom:-7px}.hero-visual img{height:auto}.filters-wrap{top:calc(var(--navh) + 52px);border-top:1px solid #f4efff}.filters{gap:8px;height:var(--filters)}.filters button{font-size:11px;padding:0 15px;height:37px;align-self:center;background:#faf9ff;color:#554a86;border:1px solid #e4def1;border-radius:22px}.filters button.active{background:#2c245b;color:#fff;border-color:#2c245b}.work{padding-top:24px;padding-bottom:60px}.work-heading{display:block}.work-heading h2{font-size:32px}.work-heading p{margin:7px 0 0;font-size:9px}.masonry{grid-template-columns:1fr;gap:15px}.project-card .art,.project-card .art.tall,.project-card .art.short{height:clamp(210px,52vw,315px)}.card-text{padding:11px 14px 13px}.card-name{font-size:16px}.preview-control{width:48px;height:48px}.about-grid{grid-template-columns:1fr;gap:0}.about-section{padding:55px 0}.footer-inner{flex-direction:column}.collection-anchor{scroll-margin-top:170px}}
@media(max-width:380px){.links .contact-link{display:none}.hero h1{font-size:39px}.hero-links{flex-direction:column;align-items:stretch}.text-cta{text-align:center}.mode-buttons button{font-size:9px}.hero-visual{width:120%;transform:translateX(-10%)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Additional theme styling */
:root{--brand-logo-width:220px}
.brand .brand-custom-logo{width:var(--brand-logo-width);max-width:100%;height:auto;max-height:52px;object-fit:contain;display:block}
.brand .brand-mobile-logo{display:none}
.project-card .art button{z-index:7}
.project-card .art .featured-image{position:absolute;inset:0}
.project-card .art .placeholder-graphic{position:absolute;inset:0;display:flex;align-items:end;padding:20px;color:#fff;font:800 28px Manrope,sans-serif;background:radial-gradient(circle at 68% 20%,#ec71d399,transparent 45%),linear-gradient(130deg,var(--admiral),var(--purpledeep))}
.project-card .art .preview-control[disabled]{opacity:.45;cursor:not-allowed}
.player-warning{font-size:10px;color:#fff2bb;min-height:14px}
.mode-buttons button:disabled{opacity:.35;cursor:not-allowed}
.project-card[hidden]{display:none!important}
.card-text .card-bottom .muted-listen{opacity:.65;cursor:default}
.custom-page{min-height:55vh;padding:80px 0 110px}
.custom-page h1{font-size:clamp(32px,5vw,58px);letter-spacing:-.05em;line-height:1.14}
.custom-page .entry-content{max-width:800px;font-size:17px;line-height:1.8}
.single-project-image{width:100%;max-height:560px;object-fit:cover;border-radius:14px}
.admin-preview-note{display:inline-block;color:#5c5181;font-size:10px;margin-top:10px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:720px){.brand .brand-desktop-logo{display:none}.brand .brand-mobile-logo{display:block}.brand .brand-custom-logo{max-width:min(var(--brand-logo-width),175px);max-height:45px}}

/* Optional theme menu and footer logo */
.links .wez-nav-items{margin:0;padding:0;list-style:none;display:flex;align-items:center;gap:31px}
.links .wez-nav-items li{margin:0;padding:0;list-style:none}
.links .wez-nav-items li::marker{content:''}
.links .wez-nav-items .current-menu-item>a{color:var(--purple)}
.footer{background:var(--purpledeep)}
.footer-inner{color:#e7e0ff;align-items:center}
.footer-logo{max-width:200px;height:auto;max-height:60px;object-fit:contain}
@media(max-width:900px){.links.open .wez-nav-items{display:flex;align-items:stretch;flex-direction:column;gap:0}.links.open .wez-nav-items a{display:block}}

/* v0.2 — rights-aware project showcase and media-adaptive player */
.global-player.no-audio .player-inner{grid-template-columns:minmax(235px,.8fr) minmax(0,2fr)}
.global-player.no-audio .playback,.global-player.no-audio .mix-controls{display:none!important}
.global-player .player-showcase[hidden]{display:none!important}
.global-player.no-audio .player-showcase{display:flex;align-items:center;justify-content:space-between;gap:16px;min-width:0;padding-left:22px;border-left:1px solid #7d74a7}
.showcase-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.showcase-copy strong{font:700 14px Manrope,sans-serif;color:#fff}.showcase-copy span{font-size:10px;color:#c9c5e7}
.showcase-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.showcase-actions a{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;padding:10px 15px;min-height:39px;border:1px solid #8078aa;border-radius:5px;color:#fff;font-weight:700;font-size:11px}
.showcase-actions .showcase-watch{background:var(--yellow);color:var(--purpledeep);border-color:var(--yellow)}
.showcase-actions a:hover{border-color:var(--fuchsia)}
.mode-buttons button[hidden],.showcase-actions a[hidden],.modal-actions [hidden]{display:none!important}
.mode-buttons.single-mode button{flex:0 1 auto;min-width:110px}
.preview-control.preview-watch,.preview-control.preview-detail{display:grid;place-items:center;text-decoration:none;font-size:21px}
.card-bottom a{display:inline-flex;color:var(--purple);font-weight:800;white-space:nowrap;text-decoration:none}
.card-bottom a:hover{color:var(--fuchsia)}
.modal-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.project-rights-note{color:var(--muted);font-size:12px}
@media(max-width:900px){.global-player.no-audio .player-inner{grid-template-columns:1fr}.global-player.no-audio .player-showcase{grid-column:1;grid-row:2;padding-left:0;padding-top:9px;border-left:0;border-top:1px solid #7d74a7}}
@media(max-width:720px){.global-player.no-audio .player-inner{grid-template-columns:1fr;gap:5px;padding:12px 14px}.global-player.no-audio .player-showcase{display:flex;grid-column:1;grid-row:2;align-items:flex-start;flex-direction:column;padding-top:8px;gap:8px}.global-player.no-audio.is-compact:not(.force-open) .player-showcase{display:none}.global-player.no-audio.is-compact:not(.force-open) .player-inner{grid-template-columns:1fr}.global-player.no-audio.is-compact:not(.force-open) .now-playing{grid-column:1}.global-player.no-audio .showcase-actions{justify-content:flex-start;gap:7px}.global-player.no-audio .showcase-actions a{padding:8px 12px;min-height:34px;font-size:10px}.global-player.no-audio .showcase-copy strong{font-size:12px}}

.card-media-label{color:var(--purple);background:#f0edfa;padding:3px 7px;border-radius:10px;font-size:8px;white-space:nowrap;letter-spacing:.07em}

/* v0.3: project articles, adaptive audio-video player and embeddable media collection */
.portfolio-art-link{display:block;position:absolute;inset:0;z-index:2}.portfolio-art-link:focus-visible{outline:4px solid var(--yellow);outline-offset:-4px}.project-card .art .featured-image{pointer-events:none}.card-name{display:block;text-decoration:none;text-align:left;cursor:pointer;color:var(--purpledeep);font:800 18px/1.3 Manrope,sans-serif;margin:6px 0 4px}.card-name:hover{color:var(--fuchsia)}.project-card .card-text .card-bottom a{font-size:11px}
.player-watch-inline{width:100%;margin-top:7px;background:#484179;color:#fff;border:1px solid #8a7eb7;border-radius:5px;padding:7px 10px;font-weight:700}.player-watch-inline:hover{background:#63559b}.player-watch-inline[hidden],#playerVideo[hidden]{display:none!important}.showcase-actions button{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;padding:10px 15px;min-height:39px;border:1px solid #8078aa;border-radius:5px;color:#211940;background:var(--yellow);font-weight:700;font-size:11px;cursor:pointer}
.single-project-page{padding-top:62px}.project-article{max-width:1100px;margin:auto}.single-project-page h1{max-width:900px;margin:9px 0 12px}.single-project-subtitle{color:#6d6289;font-size:16px;margin:0 0 26px}.single-project-image{display:block;width:100%;margin:0 0 35px;max-height:600px}.single-project-page .entry-content{max-width:920px;overflow-wrap:anywhere}.entry-content img{max-width:100%;height:auto}.entry-content figure{max-width:100%}.entry-content blockquote{border-left:3px solid var(--fuchsia);padding-left:25px;margin-left:0}.single-return{margin-top:50px}
.wez-media-section{margin:45px 0 65px;scroll-margin-top:200px}.wez-media-intro h2{font:800 clamp(28px,3vw,43px) Manrope,sans-serif;letter-spacing:-.04em;margin:3px 0}.wez-media-intro p{color:#695e86}.wez-media-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:22px}.wez-media-tile{border:1px solid #e5e0f1;border-radius:11px;background:white;overflow:hidden;box-shadow:0 6px 20px #2520540d}.wez-media-select{width:100%;height:175px;position:relative;display:block;border:0;padding:0;background:#30275f;cursor:pointer;color:white}.wez-media-select img{width:100%;height:100%;object-fit:cover}.wez-media-select-label{position:absolute;left:0;bottom:0;right:0;text-align:left;padding:22px 14px 12px;font-weight:800;letter-spacing:.06em;font-size:10px;background:linear-gradient(transparent,#1a133bbb)}.wez-media-placeholder{font-size:70px;color:#e9b4ea}.wez-media-tile-body{padding:15px}.wez-media-tile h3{font:800 17px/1.3 Manrope,sans-serif;margin:0 0 7px;color:var(--purple)}.wez-media-tile p{margin:0 0 12px;color:#706688;font-size:12px}.wez-media-actions{display:flex;flex-wrap:wrap;gap:7px}.wez-media-actions button{background:#f1edfb;border:1px solid #dfd7f3;color:var(--purple);border-radius:5px;padding:9px 12px;font-weight:800;font-size:11px;cursor:pointer}.wez-media-actions button:hover{background:var(--yellow);border-color:var(--yellow)}.wez-media-tile.is-selected{outline:3px solid var(--fuchsia);outline-offset:-3px}
.video-overlay{position:fixed;inset:0;z-index:1000;background:rgba(6,5,15,.93);display:none;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(10px)}.video-overlay.open{display:flex}.video-dialog{width:min(1040px,100%);color:white;outline:none}.video-dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:10px}.video-dialog-heading h2{font:700 clamp(15px,2.5vw,22px) Manrope,sans-serif;margin:0}.video-dialog-heading button{background:#fff2;border:1px solid #ffffff55;border-radius:50%;width:43px;height:43px;color:white;font-size:21px;cursor:pointer}.video-stage{width:100%;aspect-ratio:16/9;background:#08070d;border-radius:8px;overflow:hidden;display:grid;place-items:center}.video-stage iframe,.video-stage video{width:100%;height:100%;border:0;display:block;object-fit:contain}.video-dialog-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;color:#c6c1d4;font-size:12px;margin-top:12px}.video-dialog-footer a{color:#ffe849}.video-dialog-footer a:hover{text-decoration:underline}body.wez-video-open{overflow:hidden}
@media(max-width:900px){.wez-media-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.player-watch-inline{margin-top:3px}}
@media(max-width:720px){.wez-media-grid{grid-template-columns:1fr}.wez-media-select{height:210px}.single-project-page{padding-top:45px}.video-overlay{padding:12px}.video-dialog-footer{flex-direction:column;align-items:flex-start;gap:5px}.player-watch-inline{padding:7px}.global-player.is-compact:not(.force-open) .player-watch-inline{display:none}}
/* Keep Watch Video inside the desktop player row rather than increasing the sticky bar height. */
@media(min-width:901px){.global-player:not(.no-audio) .mix-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 8px;align-items:end}.global-player:not(.no-audio) .mix-head{grid-column:1/-1}.global-player:not(.no-audio) .mode-buttons{grid-column:1;margin-top:0}.global-player:not(.no-audio) .player-watch-inline{grid-column:2;width:auto;margin:0;min-height:38px;white-space:nowrap}}
@media(min-width:721px) and (max-width:900px){:root{--playerh:198px}}
@media(max-width:720px){:root{--playerh:222px}}

/* v0.3.1 — A separate combined Music + Sound Effects file can be selected.
   Keep all four possible track controls reachable without clipping on narrow screens. */
.mode-buttons{flex-wrap:wrap}
.mode-buttons button{flex:1 1 auto;min-width:0}
@media(max-width:720px){
  .mode-buttons button{flex:1 1 calc(50% - 4px);white-space:normal}
  .mode-buttons.single-mode button{flex:0 1 auto}
  .global-player.force-open .mode-buttons{padding-right:0}
}

/* When all four recordings exist, keep the controls in an even 2×2 grid. */
.mode-buttons.four-mode{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
.mode-buttons.four-mode button{width:100%;white-space:normal;min-width:0;line-height:1.25}
@media(min-width:901px){body:has(.mode-buttons.four-mode) .filters-wrap{top:calc(var(--navh) + 134px)}}


/* v0.4.3 — Layout B logo remains visible beside the persistent player on
   every template (home, project, post and page). It keeps its chosen
   desktop dimensions while scrolling. */
.home-hero-brand{display:none}
.wez-sticky-brand{display:none}
@media(min-width:1101px){
  :root{--navh:46px}
  .site-nav{border-bottom:0;box-shadow:none;z-index:200}
  .nav-inner{justify-content:flex-end}
  .nav-inner > .brand{display:none}
  .links{gap:27px}
  .links a{font-size:9px;padding-top:9px;padding-bottom:9px}
  .global-player{
    --wez-edge:max(24px,calc((100vw - 1370px)/2));
    padding-left:calc(var(--wez-edge) + var(--home-logo-width) + 20px);
    padding-right:var(--wez-edge);
    background:rgba(255,255,255,.97);
    z-index:90;
  }
  .global-player .player-inner{
    width:100%;min-height:119px;border-radius:9px 9px 13px 13px;
    gap:clamp(12px,1.55vw,24px);
  }
  .global-player .wez-sticky-brand{
    display:flex;align-items:flex-start;justify-content:center;
    position:absolute;top:0;left:var(--wez-edge);
    width:var(--home-logo-width);height:auto;z-index:3;
    white-space:normal;line-height:1.05;
    transform-origin:top left;
    transition:none;
  }
  .wez-sticky-brand .brand-desktop-logo{
    display:block!important;width:100%!important;height:auto!important;
    max-height:none!important;max-width:none!important;object-fit:contain;
    filter:drop-shadow(0 4px 10px rgba(33,20,74,.04));
  }
  .wez-sticky-brand .brand-mobile-logo,.wez-sticky-brand .brand-mobile-wordmark{display:none!important}
  /* Logo has no scrolled state. Scroll must never change its dimensions. */
  /* Soft, feathered protection from page content scrolling beneath the large
     persistent logo. This is not part of the logo image: the PNG remains transparent. */
  .global-player .wez-sticky-brand{isolation:isolate}
  .global-player .wez-sticky-brand::before{
    content:"";position:absolute;z-index:-1;pointer-events:none;
    inset:-8px -19px -24px -19px;
    border-radius:22px;
    background:radial-gradient(ellipse at 49% 44%,rgba(255,255,255,.98) 0%,rgba(255,255,255,.98) 64%,rgba(255,255,255,.73) 83%,rgba(255,255,255,0) 100%);
  }
  /* Maintain space for the always-large brand mark. */
  .hero{overflow:hidden}
  .hero-inner{padding-top:95px;align-items:center}
  .hero h1{margin-top:3px}
  .hero-visual{transform:translate(1%,-4%)}
  .custom-page,.single-project-page{padding-top:max(128px,calc(var(--home-logo-width) - 55px))}
  .collection-anchor{scroll-margin-top:calc(var(--navh) + var(--playerh) + 70px)}
}
@media(min-width:1101px) and (max-width:1300px){
  .global-player .player-inner{
    grid-template-columns:minmax(150px,.85fr) minmax(205px,1.16fr) minmax(185px,1fr);
    gap:12px;padding:12px;
  }
  .global-player .album-square{width:55px;height:55px}
  .global-player .now-playing{gap:9px}
}
@media(min-width:783px){
  body.admin-bar .site-nav{top:32px}
  body.admin-bar .global-player{top:calc(var(--navh) + 32px)}
  body.admin-bar .filters-wrap{top:calc(var(--navh) + var(--playerh) + 24px)}
}
@media(min-width:1101px){
  .filters-wrap, body:has(.mode-buttons.four-mode) .filters-wrap{top:calc(var(--navh) + var(--wez-player-height,var(--playerh)) - 8px)}
  body.admin-bar .filters-wrap{top:calc(var(--navh) + var(--wez-player-height,var(--playerh)) + 24px)}
}
@media(prefers-reduced-motion:reduce){
  .global-player .wez-sticky-brand{transition:none}
}
/* v0.4.2 — bundled approved logo and streamlined Layout B. */
.brand-mobile-wordmark{display:none}
@media (max-width:1100px){
  .nav-inner .brand .brand-desktop-logo{display:none}
  .nav-inner .brand .brand-mobile-logo{display:block;max-width:61px;width:auto;height:43px;max-height:43px;object-fit:contain}
  .nav-inner .brand .brand-mobile-wordmark{display:inline;color:var(--purple);font:800 13px/1.1 Manrope,Arial,sans-serif;letter-spacing:.11em}
}
@media (max-width:720px){
  .hero-inner{padding-top:26px}
  .hero h1{margin-top:0}
  .nav-inner .brand .brand-mobile-logo{height:39px;max-height:39px;max-width:55px}
  .nav-inner .brand .brand-mobile-wordmark{font-size:11px;letter-spacing:.07em}
}

/* v0.4.5 — never shrink desktop brand logo, regardless of scroll state.
   This duplicates the layout's chosen width deliberately to override older cached
   rules in case an optimisation plugin combines stylesheets out of order. */
@media (min-width:1101px){
  .global-player .wez-sticky-brand,
  .global-player.is-scrolled .wez-sticky-brand,
  .global-player.is-compact .wez-sticky-brand{
    width:var(--home-logo-width)!important;
    min-width:var(--home-logo-width)!important;
    max-width:var(--home-logo-width)!important;
    transform:none!important;
    scale:1!important;
    transition:none!important;
  }
  .global-player .wez-sticky-brand .brand-desktop-logo{
    display:block!important;
    width:100%!important;
    height:auto!important;
    max-height:none!important;
    transform:none!important;
    scale:1!important;
    transition:none!important;
  }
}


/* v0.4.7: One unified, fixed-size logo + audio + shortcuts + portfolio navigation.
   The header owns all three elements and occupies normal document space. It is
   deliberately opaque, preventing scroll content from ever overlapping branding. */
:root{--wez-header-fade:58px}
.site-nav.wez-master-header{
  position:sticky;top:0;z-index:210;
  height:auto;min-height:0;padding:10px 0 0;
  background:var(--site-bg,#fff)!important;
  border:0;border-bottom:1px solid var(--line);
  box-shadow:0 9px 25px rgba(40,29,82,.045);
  overflow:visible;isolation:isolate;
  backdrop-filter:none;
}
/* Soft fading veil is stationary below the bottom of the sticky bar.
   Scrolling content fades gently as it approaches the nav/player; pointer
   events pass through it so controls underneath are never blocked. */
.site-nav.wez-master-header::after{
  content:'';position:absolute;inset:auto 0 calc(-1 * var(--wez-header-fade)) 0;
  height:var(--wez-header-fade);z-index:-1;pointer-events:none;
  background:linear-gradient(to bottom,
    var(--site-bg,#fff) 0%,
    color-mix(in srgb,var(--site-bg,#fff) 91%,transparent) 18%,
    color-mix(in srgb,var(--site-bg,#fff) 52%,transparent) 56%,
    transparent 100%);
}
.wez-master-grid{display:grid;grid-template-columns:var(--home-logo-width,215px) minmax(0,1fr);align-items:start;gap:clamp(12px,2vw,26px);}
.wez-master-logo{display:block;width:var(--home-logo-width,215px);min-width:0;align-self:start;margin:0;position:relative;}
.wez-master-logo .brand-desktop-logo{display:block!important;width:100%!important;max-width:none!important;max-height:none!important;height:auto!important;object-fit:contain;transform:none!important;transition:none!important;}
.wez-master-logo .brand-mobile-logo,.wez-master-logo .brand-mobile-wordmark{display:none!important}
.wez-master-main{min-width:0;display:flex;flex-direction:column;gap:0;}
.wez-master-header .global-player,.wez-master-header .global-player.no-audio{position:relative!important;top:auto!important;left:auto!important;padding:0!important;z-index:auto!important;min-height:0;background:transparent!important;backdrop-filter:none!important;}
.wez-master-header .global-player .player-inner{width:100%!important;margin:0!important;min-height:108px;grid-template-columns:minmax(155px,.95fr) minmax(185px,1.25fr) minmax(180px,.96fr);gap:clamp(7px,1.4vw,22px);padding:13px 16px;border-radius:11px!important;}
.wez-master-header .global-player.no-audio .player-inner{grid-template-columns:minmax(185px,.85fr) minmax(0,2fr)}
.wez-master-actions{display:flex;align-items:center;gap:clamp(12px,1.65vw,24px);min-height:59px;padding:8px 3px;white-space:nowrap;}
.wez-master-actions .primary-cta{padding:10px 16px;min-height:42px;white-space:nowrap;font-size:10px;}
.wez-master-actions .text-cta{padding:6px 1px;font-size:9px;white-space:nowrap;}
.wez-master-actions .wez-contact-link{color:var(--purple);border-color:var(--fuchsia)}
.wez-master-filters{display:flex;align-items:center;gap:clamp(15px,1.85vw,30px);height:44px;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#d2cae8 transparent;border-top:1px solid #ebe8f6;white-space:nowrap;}
.wez-master-filters :is(button,a){position:relative;display:flex;align-items:center;height:100%;border:0;border-bottom:3px solid transparent;padding:0;background:transparent;color:#635b80;font:700 10px 'DM Sans',sans-serif;flex-shrink:0;white-space:nowrap;text-decoration:none;cursor:pointer;}
.wez-master-filters :is(button,a):hover{color:var(--purple)}
.wez-master-filters :is(button.active,a[aria-current="page"]){border-bottom-color:var(--fuchsia);color:var(--purpledeep)}
/* Replace the old floating/dual sticky navigation. No independent sticky
   items remain, so their positions cannot fall out of sync on scroll. */
.wez-sticky-brand,.site-nav .nav-inner,.filters-wrap{display:none!important}
.collection-anchor,#work,#about,#services,#contact{scroll-margin-top:calc(var(--wez-sticky-header-height,230px) + 18px)}
/* Unlike the former floating logo, the content starts below the entire
   opaque header, with no left-hand overlay or text hidden behind the logo. */
.hero .hero-inner{padding-top:35px!important;}
.custom-page,.single-project-page{padding-top:42px!important;}
@media(min-width:1101px){
  .site-nav.wez-master-header{top:0!important;}
  .wez-master-header .global-player{padding:0!important;}
  .wez-master-header .global-player .player-inner{width:100%!important;}
}
@media(min-width:901px) and (max-width:1199px){
  .wez-master-grid{grid-template-columns:min(19vw,var(--home-logo-width,215px)) minmax(0,1fr)}
  .wez-master-logo{width:100%;}
  .wez-master-header .global-player .player-inner{grid-template-columns:minmax(130px,.9fr) minmax(165px,1.1fr) minmax(155px,.95fr);padding:10px 12px;gap:9px}
  .wez-master-header .global-player .album-square{width:48px;height:48px}
  .wez-master-header .global-player .now-playing{gap:8px}
  .wez-master-actions{gap:16px}
  .wez-master-filters{gap:18px}
}
@media(max-width:900px){
  .site-nav.wez-master-header{padding-top:7px;}
  .wez-master-grid{grid-template-columns:1fr;gap:5px;}
  .wez-master-logo{width:auto;display:flex;align-items:center;gap:8px;min-height:40px;}
  .wez-master-logo .brand-desktop-logo{display:none!important;}
  .wez-master-logo .brand-mobile-logo{display:block!important;width:auto!important;max-width:60px!important;max-height:43px!important;height:43px!important;object-fit:contain;}
  .wez-master-logo .brand-mobile-wordmark{display:inline!important;color:var(--purple);font:800 13px/1.1 Manrope,Arial,sans-serif;letter-spacing:.1em;}
  .wez-master-header .global-player .player-inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.06fr);gap:8px 15px;padding:10px 13px;min-height:0;}
  .wez-master-header .global-player .now-playing{grid-column:1;grid-row:1;}
  .wez-master-header .global-player .playback{grid-column:2;grid-row:1;}
  .wez-master-header .global-player .mix-controls{grid-column:1/-1;grid-row:2;}
  .wez-master-actions{min-height:42px;padding:6px 0;gap:18px;}
  .wez-master-actions .primary-cta{min-height:35px;padding:8px 12px;font-size:9px}
  .wez-master-filters{height:44px;gap:13px;}
}
@media(max-width:720px){
  .wez-master-grid{width:calc(100% - 20px);}
  .wez-master-logo{min-height:39px;}
  .wez-master-logo .brand-mobile-logo{max-width:52px!important;height:37px!important;}
  .wez-master-logo .brand-mobile-wordmark{font-size:11px;}
  .wez-master-header .global-player .player-inner{grid-template-columns:1fr;gap:5px;padding:9px 11px;}
  .wez-master-header .global-player .now-playing{grid-column:1;grid-row:1}
  .wez-master-header .global-player .playback{grid-column:1;grid-row:2}
  .wez-master-header .global-player .mix-controls{grid-column:1;grid-row:3}
  .wez-master-header .global-player.no-audio .player-inner{grid-template-columns:1fr}
  .wez-master-header .global-player.no-audio .player-showcase{grid-column:1;grid-row:2}
  .wez-master-actions{min-height:37px;gap:10px;padding:6px 2px}
  .wez-master-actions .primary-cta{font-size:8px;padding:7px 8px;min-height:32px;}
  .wez-master-actions .text-cta{font-size:8px;letter-spacing:.035em}
  .wez-master-filters{height:41px;gap:8px;padding-bottom:1px;}
  .wez-master-filters :is(button,a){height:32px;align-self:center;background:#f8f6ff;border:1px solid #e8e1f5;border-radius:20px;padding:0 11px;font-size:10px;}
  .wez-master-filters button.active{background:var(--purple);color:#fff;border-color:var(--purple)}
  .wez-master-header .global-player.is-compact:not(.force-open) .player-inner{display:grid;grid-template-columns:minmax(0,1fr) auto;}
  .wez-master-header .global-player.is-compact:not(.force-open) .now-playing{grid-column:1;grid-row:1}
  .wez-master-header .global-player.is-compact:not(.force-open) .playback{grid-column:2;grid-row:1}
  .wez-master-header .global-player.is-compact:not(.force-open) .mix-controls{display:none}
  .wez-master-header .global-player.is-compact:not(.force-open) .player-expand{display:block;}
  .wez-master-header .global-player.force-open .player-inner{grid-template-columns:1fr;}
  .wez-master-header .global-player.force-open .now-playing{grid-column:1;grid-row:1}
  .wez-master-header .global-player.force-open .playback{grid-column:1;grid-row:2}
  .wez-master-header .global-player.force-open .mix-controls{grid-column:1;grid-row:3;display:block}
  .site-nav.wez-master-header::after{height:38px;bottom:-38px;--wez-header-fade:38px}
}
@media(max-width:410px){
  .wez-master-actions{gap:7px;}
  .wez-master-actions .primary-cta{font-size:7.5px;padding:7px 7px;}
  .wez-master-actions .text-cta{font-size:7.5px;}
}
@media(min-width:783px){body.admin-bar .site-nav.wez-master-header{top:32px!important;}}
@media(max-width:782px){body.admin-bar .site-nav.wez-master-header{top:46px!important;}}
@media(prefers-reduced-motion:reduce){.site-nav.wez-master-header::after{height:24px;bottom:-24px;--wez-header-fade:24px}}

/* Preserve a previously configured WordPress primary menu as an accessible
   optional dropdown rather than discarding the user's custom links. */
.wez-extra-menu{position:relative;margin-left:auto;flex:none;font-size:10px;font-weight:800}
.wez-extra-menu summary{cursor:pointer;list-style:none;padding:7px 9px;color:var(--purple);white-space:nowrap}
.wez-extra-menu summary::-webkit-details-marker{display:none}
.wez-extra-links{position:absolute;top:100%;right:0;z-index:30;min-width:190px;list-style:none;margin:0;padding:8px 0;border:1px solid #eee9f7;border-radius:8px;background:#fff;box-shadow:0 12px 32px #20164a24}
.wez-extra-links li{margin:0;padding:0}
.wez-extra-links a{display:block;padding:9px 16px;color:var(--purple);font-size:11px;white-space:nowrap}
.wez-extra-links a:hover{background:#f6f2ff}
@media(max-width:720px){.wez-extra-menu summary{padding:4px;font-size:9px}.wez-extra-links{min-width:140px}}


/* v0.4.8 — tactile squash-and-stretch, deliberately light and short.
   Scale is visual only, so clickable areas, sticky layout, and text flow
   never shift. A CSS hover animation runs ONCE on pointer entry. */
@keyframes wez-nav-tactile {
  0%   {transform:scale(1,1)}
  24%  {transform:scale(1.065,.958)}
  49%  {transform:scale(.982,1.028)}
  72%  {transform:scale(1.014,.993)}
  100% {transform:scale(1,1)}
}
@keyframes wez-play-tactile {
  0%   {transform:scale(1,1)}
  24%  {transform:scale(1.13,.93)}
  49%  {transform:scale(.965,1.055)}
  72%  {transform:scale(1.025,.985)}
  100% {transform:scale(1,1)}
}
/* The full navigation includes CTA links, category filters, the optional
   WordPress menu dropdown, and legacy primary links if present. */
.wez-master-actions a,
.wez-master-filters :is(a,button),
.wez-extra-menu summary,
.wez-extra-links a,
.site-nav .links a {
  transform-origin:50% 50%;
  will-change:auto;
}
.wez-master-actions a,.wez-extra-menu summary,.site-nav .links a{display:inline-block}
@media(hover:hover) and (pointer:fine) {
  .wez-master-actions a:hover,
  .wez-master-filters :is(a,button):hover,
  .wez-extra-menu summary:hover,
  .wez-extra-links a:hover,
  .site-nav .links a:hover {
    animation:wez-nav-tactile 360ms cubic-bezier(.24,.74,.2,1) 1;
  }
}
.wez-master-actions a:focus-visible,
.wez-master-filters :is(a,button):focus-visible,
.wez-extra-menu summary:focus-visible,
.wez-extra-links a:focus-visible,
.site-nav .links a:focus-visible {
  animation:wez-nav-tactile 360ms cubic-bezier(.24,.74,.2,1) 1;
}
.round-play.wez-tactile-press,
.preview-control.wez-tactile-press {
  animation:wez-play-tactile 370ms cubic-bezier(.22,.72,.2,1) 1;
  transform-origin:center;
}
/* Existing preview-control:hover scale would otherwise leave the circle
   enlarged once the click pulse had settled. */
.preview-control:hover{transform:none}
@media(prefers-reduced-motion:reduce){
  .round-play.wez-tactile-press,
  .preview-control.wez-tactile-press,
  .wez-master-actions a:hover,
  .wez-master-filters :is(a,button):hover,
  .wez-extra-menu summary:hover,
  .wez-extra-links a:hover,
  .site-nav .links a:hover { animation:none!important; }
}


/* v0.4.9 — Listen buttons on individual media tiles now share the gentle
   tactile squash-and-stretch on hover, keyboard focus and click/tap.
   Only transform animates: these buttons never change their layout footprint. */
.wez-media-actions .wez-media-wobble{transform-origin:center center;}
@media(hover:hover) and (pointer:fine){
  .wez-media-actions .wez-media-wobble:hover:not(.wez-tactile-press):not(.wez-listen-clicked){
    animation:wez-nav-tactile 360ms cubic-bezier(.24,.74,.2,1) 1;
  }
}
.wez-media-actions .wez-media-wobble:focus-visible:not(.wez-tactile-press):not(.wez-listen-clicked){
  animation:wez-nav-tactile 360ms cubic-bezier(.24,.74,.2,1) 1;
}
.wez-media-actions .wez-media-wobble.wez-tactile-press{
  animation:wez-play-tactile 370ms cubic-bezier(.22,.72,.2,1) 1;
}
@media(prefers-reduced-motion:reduce){
  .wez-media-actions .wez-media-wobble:hover,
  .wez-media-actions .wez-media-wobble:focus-visible,
  .wez-media-actions .wez-media-wobble.wez-tactile-press{
    animation:none!important;
  }
}

/* v0.5.0: square one-play animated wordmark, keeping header proportions stable. */
.wez-master-logo .wez-logo-desktop-picture{display:block;width:100%;height:auto;line-height:0}
.wez-master-logo .wez-logo-mobile-picture{display:none;line-height:0}
.wez-media-select{cursor:default;pointer-events:none}
.wez-media-select-label{display:none}
@media(max-width:720px){
  .wez-master-logo .wez-logo-desktop-picture{display:none}
  .wez-master-logo .wez-logo-mobile-picture{display:block;width:60px;max-width:60px;flex:0 0 60px}
  .wez-master-logo .wez-logo-mobile-picture .brand-mobile-logo{max-width:60px!important;width:100%!important;height:43px!important;max-height:43px!important;object-fit:contain}
}
@media(max-width:380px){.wez-master-logo .wez-logo-mobile-picture{max-width:52px;flex-basis:52px}}


/* v0.5.1 — Wide, responsive featured images on project, page and article
   templates. Content text remains narrow and legible; only the official
   WordPress Featured Image breaks out to near-viewport width. */
.wez-featured-visual {
  position: relative;
  left: 50%;
  transform: translateX(-50%);
  width: calc(100vw - clamp(32px, 8vw, 128px));
  max-width: none;
  margin: 24px 0 clamp(28px, 4vw, 46px);
  padding: 0;
}
.wez-featured-visual .wez-featured-visual-image,
.wez-featured-visual .single-project-image {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  max-height: none;
  object-fit: contain;
  border-radius: 14px;
}
@media (max-width:720px) {
  .wez-featured-visual { margin-top: 18px; margin-bottom: 27px; }
  .wez-featured-visual .wez-featured-visual-image,
  .wez-featured-visual .single-project-image { border-radius: 9px; }
}


/* v0.5.2 — Mobile player first, clear of scrolling document content. */
@media(max-width:720px){
  /* overflow:hidden can create an extra scrolling ancestor and break sticky
     positioning on mobile browsers. clip doesn't create a scroll container. */
  html,body{overflow-x:clip;}
  .site-nav.wez-master-header{
    position:sticky!important;top:0!important;z-index:450!important;
    background:var(--site-bg,#fff)!important;isolation:isolate;
    padding-top:0!important;transform:none!important;
    overflow:visible!important;
  }
  .wez-master-grid{display:flex!important;flex-direction:column!important;gap:3px!important;align-items:stretch!important;}
  .wez-master-main{display:contents!important;}
  .wez-master-header .global-player{order:0!important;width:100%;position:relative!important;z-index:2!important;}
  .wez-master-logo{order:1!important;min-height:78px!important;align-items:center!important;gap:10px!important;}
  .wez-master-actions{order:2!important;}
  .wez-master-filters{order:3!important;}
  .wez-master-logo .brand-mobile-logo{
    width:104px!important;max-width:104px!important;
    height:74px!important;max-height:74px!important;
    object-fit:contain!important;
  }
  .wez-master-logo .wez-logo-mobile-picture{display:block!important;flex:none;}
  .wez-master-logo .brand-mobile-wordmark{font-size:15px!important;line-height:1.05!important;}
  .wez-master-header .global-player .player-inner{border-radius:0 0 12px 12px!important;}
  /* Don't let old compacting/mobile rules reintroduce a gap above the player. */
  body.admin-bar .site-nav.wez-master-header{top:0!important;}
}
@media(min-width:721px) and (max-width:782px){body.admin-bar .site-nav.wez-master-header{top:46px!important;}}
/* The embedded video overlay must remain above the persistent player. */
.video-overlay{z-index:1000!important;}
/* A single contact form at the bottom of all site templates. */
.wez-contact-section{padding:clamp(46px,7vw,85px) 0;background:linear-gradient(155deg,#f7f4ff,#fff 80%);border-top:1px solid var(--line);}
.wez-contact-inner{width:min(780px,calc(100% - 32px));margin:auto;}
.wez-contact-intro{text-align:center;margin-bottom:26px;}
.wez-contact-intro h2{font:800 clamp(28px,3.4vw,42px)/1.15 Manrope,Arial,sans-serif;letter-spacing:-.045em;margin:10px 0 12px;color:var(--purpledeep);}
.wez-contact-intro p{color:var(--muted);font-size:14px;line-height:1.7;margin:auto;max-width:540px;}
.wez-contact-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px 20px;background:#fff;padding:clamp(18px,3vw,32px);border:1px solid #e9e3f5;border-radius:15px;box-shadow:0 15px 42px #2b1d6010;}
.wez-form-field{display:flex;flex-direction:column;gap:6px;min-width:0;}
.wez-form-field label{font-weight:800;color:var(--purple);font-size:12px;}
.wez-form-field :is(input,textarea){width:100%;min-width:0;padding:12px 14px;border:1px solid #d8d1ea;border-radius:7px;color:var(--purpledeep);background:#fff;font:inherit;line-height:1.5;}
.wez-form-field :is(input,textarea):focus{outline:2px solid var(--fuchsia);outline-offset:1px;}
.wez-form-field textarea{min-height:150px;resize:vertical;}
.wez-form-full{grid-column:1/-1;}
.wez-form-submit{justify-self:start;grid-column:1/-1;}
.wez-form-status{margin:0 0 18px;padding:12px 16px;border:1px solid #d6c6e9;background:#f5efff;border-radius:8px;color:var(--purpledeep);font-weight:600;}
.wez-form-status[data-status="sent"]{border-color:#93c6a8;background:#edf9f0;color:#205c3d;}
.wez-form-honey{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important;}
.wez-contact-note{grid-column:1/-1;color:#736a91;font-size:11px;line-height:1.6;margin:0;}
@media(max-width:600px){.wez-contact-form{grid-template-columns:1fr;gap:13px;}.wez-contact-form .wez-form-field{grid-column:1;}}
/* Animated mobile picture has its own size rules; double both dimensions too. */
@media(max-width:720px){
  .wez-master-logo .wez-logo-mobile-picture{
    display:block!important;width:104px!important;max-width:104px!important;
    flex:0 0 104px!important;
  }
  .wez-master-logo .wez-logo-mobile-picture .brand-mobile-logo{
    width:104px!important;max-width:104px!important;
    height:74px!important;max-height:74px!important;
  }
}
/* On tablet widths WordPress keeps its toolbar fixed at 46px. */
@media(min-width:601px) and (max-width:782px){body.admin-bar .site-nav.wez-master-header{top:46px!important;}}

/* v0.5.3 — optional contextual project credit */
.wez-secondary-credit{display:block;margin-top:4px;color:#72619b;font-size:11px;line-height:1.45;font-weight:500;font-style:italic;overflow-wrap:anywhere;}
.single-project-subtitle:has(+ .single-secondary-credit){margin-bottom:5px;}
.single-secondary-credit{font-size:15px;line-height:1.55;color:#75619b;margin:4px 0 25px;}
.single-secondary-credit em{font-style:italic;}
@media(max-width:720px){.single-secondary-credit{font-size:13px;}}

.single-project-subtitle{margin-bottom:4px;}
.single-secondary-credit{margin-bottom:5px;}
.single-project-role{color:#665881;font-size:14px;margin:6px 0 26px;}
.single-project-role strong{color:var(--purpledeep);}

/* v0.5.6 — Optional shorter cover and media image shapes.
   Defaults deliberately retain the v0.5.5 image dimensions and natural
   hero aspect ratios. Only projects/media explicitly configured as Wide
   or Banner use these rules; the source image is never modified. */
.project-card .art.wez-image-shape-wide,
.project-card .art.wez-image-shape-banner { height:auto!important; }
.project-card .art.wez-image-shape-wide { aspect-ratio:9 / 4; }
.project-card .art.wez-image-shape-banner { aspect-ratio:3 / 1; }
.wez-media-tile.wez-image-shape-wide .wez-media-select,
.wez-media-tile.wez-image-shape-banner .wez-media-select {
  height:auto!important;
}
.wez-media-tile.wez-image-shape-wide .wez-media-select {aspect-ratio:9 / 4;}
.wez-media-tile.wez-image-shape-banner .wez-media-select {aspect-ratio:3 / 1;}
.wez-media-tile.wez-image-shape-wide .wez-media-select img,
.wez-media-tile.wez-image-shape-banner .wez-media-select img {
  display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
}
.wez-featured-visual.wez-image-shape-wide,
.wez-featured-visual.wez-image-shape-banner {overflow:hidden;border-radius:14px;}
.wez-featured-visual.wez-image-shape-wide {aspect-ratio:9 / 4;}
.wez-featured-visual.wez-image-shape-banner {aspect-ratio:3 / 1;}
.wez-featured-visual.wez-image-shape-wide .wez-featured-visual-image,
.wez-featured-visual.wez-image-shape-banner .wez-featured-visual-image {
  width:100%;height:100%;max-height:100%;object-fit:cover;object-position:center;
}
@media(max-width:720px){
  .wez-featured-visual.wez-image-shape-wide,
  .wez-featured-visual.wez-image-shape-banner {border-radius:9px;}
}

/* v0.5.7 — Full mobile player without a permanently oversized sticky header.
   On mobile, the header (logo, site links and category filters) scrolls normally;
   only the complete audio player docks at the top after the user scrolls.
   In a three-row responsive layout no audio functions disappear. */
@media(max-width:720px){
  .site-nav.wez-master-header{
    position:relative!important;top:auto!important;
    z-index:450!important;
  }
  body.admin-bar .site-nav.wez-master-header{top:auto!important;}
  .wez-mobile-player-spacer{order:0;display:none;width:100%;height:0;flex:none;pointer-events:none;}
  .wez-master-header.wez-mobile-player-docked .wez-mobile-player-spacer{
    display:block;height:var(--wez-mobile-player-height,165px);
  }
  .wez-master-header.wez-mobile-player-docked .global-player,
  .wez-master-header.wez-mobile-player-docked .global-player.no-audio{
    position:fixed!important;
    top:0!important;
    left:10px!important;right:10px!important;
    width:calc(100% - 20px)!important;
    z-index:950!important;
    padding:0!important;
    margin:0!important;
    background:transparent!important;
  }
  /* Top line: artwork, track title and play. Second: seekable waveform.
     Third: all available audio mixes; no collapsed or hidden controls. */
  .wez-master-header .global-player .player-inner,
  .wez-master-header .global-player.is-compact:not(.force-open) .player-inner{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 48px!important;
    grid-template-rows:auto auto auto;
    align-items:center!important;
    gap:4px 8px!important;
    padding:8px 12px 9px!important;
    min-height:0!important;
    border-radius:0 0 12px 12px!important;
  }
  .wez-master-header .global-player .now-playing,
  .wez-master-header .global-player.is-compact:not(.force-open) .now-playing{
    grid-column:1!important;grid-row:1!important;min-width:0;
  }
  .wez-master-header .global-player .album-square{width:39px;height:39px;}
  .wez-master-header .global-player .now-playing{gap:9px;}
  .wez-master-header .global-player .small-label{font-size:8px;}
  .wez-master-header .global-player .song-title{font-size:12px;}
  .wez-master-header .global-player .song-info{font-size:9px;}
  .wez-master-header .global-player .playback{
    display:contents!important;
  }
  .wez-master-header .global-player .round-play{
    grid-column:2!important;grid-row:1!important;
    justify-self:end;width:44px;height:44px;
  }
  .wez-master-header .global-player .timeline{
    grid-column:1/-1!important;grid-row:2!important;
    width:100%;min-width:0;
  }
  .wez-master-header .global-player .waveform{height:25px;}
  .wez-master-header .global-player .timestamps{font-size:9px;line-height:1.2;}
  .wez-master-header .global-player .mix-controls,
  .wez-master-header .global-player.is-compact:not(.force-open) .mix-controls{
    display:block!important;grid-column:1/-1!important;grid-row:3!important;
    padding:2px 0 0!important;margin:0!important;
    border:0!important;
  }
  .wez-master-header .global-player .mix-head{display:none!important;}
  .wez-master-header .global-player .mode-buttons{margin:0;gap:5px;}
  .wez-master-header .global-player .mode-buttons button{
    min-height:31px;flex:1 1 auto;padding:6px 8px;
    font-size:10px;line-height:1.25;
  }
  .wez-master-header .global-player .mode-buttons.four-mode{
    display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;
  }
  .wez-master-header .global-player .mode-buttons.four-mode button{
    min-height:39px;padding:4px 2px;font-size:9px;
  }
  .wez-master-header .global-player .player-watch-inline{width:100%;margin-top:5px;}
  .wez-master-header .global-player .player-expand{display:none!important;}
  .wez-master-header .global-player.no-audio .playback,
  .wez-master-header .global-player.no-audio .mix-controls{
    display:none!important;
  }
  .wez-master-header .global-player.no-audio .player-inner{
    grid-template-columns:1fr!important;grid-template-rows:auto auto;
  }
  .wez-master-header .global-player.no-audio .player-showcase{
    grid-column:1!important;grid-row:2!important;
  }
  /* Scroll targets do not hide underneath the docked full-height player. */
  .collection-anchor,#work,#about,#services,#contact,.wez-media-section{
    scroll-margin-top:calc(var(--wez-mobile-player-height,165px) + 22px)!important;
  }
}
@media(min-width:721px){.wez-mobile-player-spacer{display:none!important}}


/* v0.5.8 — Remove redundant desktop MENU; keep a discreet mobile-only
   navigation toggle attached to the full-height sticky media player. */
.wez-custom-menu-source{display:none!important}
.wez-mobile-dock-toggle,.wez-mobile-dock-menu{display:none!important}
@media(max-width:720px){
  .wez-master-header .global-player .player-inner,
  .wez-master-header .global-player.is-compact:not(.force-open) .player-inner{
    grid-template-columns:minmax(0,1fr) 44px 48px!important;
  }
  .wez-master-header .global-player .round-play{
    grid-column:2!important;grid-row:1!important;
  }
  .wez-master-header .global-player .wez-mobile-dock-toggle{
    display:flex!important;flex-direction:column;align-items:center;justify-content:center;
    grid-column:3!important;grid-row:1!important;
    width:47px;height:46px;justify-self:end;align-self:center;
    border:0;border-radius:9px;background:var(--yellow);color:var(--purpledeep);
    font:800 9px/1.15 Manrope,Arial,sans-serif;letter-spacing:.035em;gap:4px;
    box-shadow:0 4px 9px rgba(21,14,58,.18);
  }
  .wez-master-header .global-player .wez-mobile-dock-toggle:active{
    transform:scale(.97);
  }
  .wez-mobile-menu-icon{display:flex;flex-direction:column;gap:3px;width:19px;}
  .wez-mobile-menu-icon i{height:2.5px;width:100%;background:var(--purpledeep);border-radius:5px;display:block;}
  .wez-master-header .global-player .wez-mobile-dock-menu:not([hidden]){
    display:block!important;
    position:absolute;top:calc(100% + 5px);right:0;left:0;
    z-index:980;margin:0;color:var(--purpledeep);
    background:rgba(255,255,255,.985);border:1px solid #e9e2f5;border-radius:14px;
    padding:16px 16px 12px;box-shadow:0 18px 42px #160f3b40;
    max-height:min(580px,calc(100dvh - 160px));overflow-y:auto;overscroll-behavior:contain;
  }
  .wez-mobile-menu-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px;}
  .wez-mobile-menu-top strong{font:800 18px/1.25 Manrope,Arial,sans-serif;}
  .wez-mobile-menu-close{display:grid;place-items:center;flex:none;width:35px;height:35px;
    background:#f1ecfb;border:0;border-radius:50%;color:var(--purple);font-size:25px;line-height:1;}
  .wez-mobile-menu-shortcuts{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:17px;}
  .wez-mobile-menu-link{display:flex;align-items:center;justify-content:center;text-align:center;
    min-height:43px;padding:8px 6px;background:#f5f2fc;border-radius:8px;
    color:var(--purpledeep);font:800 10px/1.3 Manrope,Arial,sans-serif;}
  .wez-mobile-menu-shortcuts .wez-mobile-menu-link:first-child{background:var(--yellow);}
  .wez-mobile-menu-heading{font:800 10px/1.5 Manrope,Arial,sans-serif;
    letter-spacing:.11em;color:#8774b0;padding-bottom:6px;}
  .wez-mobile-menu-filters{display:flex;flex-direction:column;}
  .wez-mobile-menu-category{display:flex;align-items:center;text-align:left;justify-content:space-between;
    width:100%;padding:11px 6px;min-height:39px;color:var(--purpledeep);
    font:700 13px/1.3 'DM Sans',Arial,sans-serif;
    background:transparent;border:0;border-bottom:1px solid #f0ecf7;white-space:normal;}
  .wez-mobile-menu-category::after{content:'›';color:#948ab1;font-size:22px;line-height:1;}
  .wez-mobile-menu-category.active::after{content:'✓';font-size:15px;color:var(--fuchsia);}
  .wez-mobile-dock-menu [aria-current="page"]{color:var(--purple);font-weight:800;}
  .wez-mobile-dock-toggle:focus-visible,.wez-mobile-dock-menu button:focus-visible,
  .wez-mobile-dock-menu a:focus-visible{outline:3px solid var(--fuchsia);outline-offset:2px;}
  .wez-master-header .global-player.no-audio .player-inner{
    grid-template-columns:minmax(0,1fr) 48px!important;
    grid-template-rows:auto auto!important;
  }
  .wez-master-header .global-player.no-audio .wez-mobile-dock-toggle{
    grid-column:2!important;grid-row:1!important;
  }
  .wez-master-header .global-player.no-audio .player-showcase{
    grid-column:1/-1!important;grid-row:2!important;
  }
}
@media(prefers-reduced-motion:reduce){.wez-mobile-dock-toggle{transition:none!important}}


/* v0.5.9 — Horizontal animated mobile branding and one navigation surface.
   The dock menu mirrors the hidden DOM links, retaining filtering and desktop
   navigation while removing the redundant mobile button/category rows. */
@media(max-width:720px){
  .wez-master-header .wez-master-actions,
  .wez-master-header .wez-master-filters{
    display:none!important;
  }
  .wez-master-header .wez-master-logo{
    display:flex!important;
    width:100%!important;
    min-height:0!important;
    padding:7px 5px 10px!important;
    margin:0!important;
    justify-content:flex-start!important;
    align-items:center!important;
    line-height:0!important;
  }
  .wez-master-header .wez-logo-mobile-horizontal{
    display:block!important;
    width:100%!important;
    max-width:500px!important;
    flex:0 1 500px!important;
    height:auto!important;
    line-height:0!important;
  }
  .wez-master-header .wez-logo-mobile-horizontal .brand-mobile-logo{
    display:block!important;
    width:100%!important;
    max-width:none!important;
    height:auto!important;
    max-height:none!important;
    aspect-ratio:1120/260!important;
    object-fit:contain!important;
    object-position:left center!important;
  }
  /* The new graphic already includes the entire wordmark and strapline. */
  .wez-master-header .brand-mobile-wordmark{display:none!important;}
}

/* v0.6.1 — Adjustable scroll parallax for portfolio artwork (including all three
   editor-selectable image shapes). Only the media layer moves inside the
   clipped frame; card text, links and playback controls stay still. */
.project-card .art.wez-parallax-active,
.wez-media-tile .wez-media-select.wez-parallax-active,
.wez-featured-visual.wez-parallax-active {
  overflow: hidden;
  isolation: isolate;
}
.wez-featured-visual.wez-parallax-active { border-radius: 14px; }
.project-card .art.wez-parallax-active .featured-image {
  transform: translate3d(0, var(--wez-parallax-y, 0px), 0) scale(var(--wez-parallax-scale, 1.12));
  transition: none;
}
.project-card:hover .art.wez-parallax-active .featured-image {
  transform: translate3d(0, var(--wez-parallax-y, 0px), 0) scale(calc(var(--wez-parallax-scale, 1.12) + 0.02));
}
.wez-media-tile .wez-media-select.wez-parallax-active img {
  transform: translate3d(0, var(--wez-parallax-y, 0px), 0) scale(var(--wez-parallax-scale, 1.12));
  transform-origin: center;
}
.wez-featured-visual.wez-parallax-active .wez-featured-visual-image {
  transform: translate3d(0, var(--wez-parallax-y, 0px), 0) scale(var(--wez-parallax-scale, 1.08));
  transform-origin: center;
}
.wez-parallax-active.wez-parallax-inview .featured-image,
.wez-parallax-active.wez-parallax-inview > img {
  will-change: transform;
}
@media(max-width:720px) {
  .wez-featured-visual.wez-parallax-active { border-radius: 9px; }
}
@media(prefers-reduced-motion:reduce) {
  .project-card .art.wez-parallax-active .featured-image,
  .project-card:hover .art.wez-parallax-active .featured-image,
  .wez-media-tile .wez-media-select.wez-parallax-active img,
  .wez-featured-visual.wez-parallax-active .wez-featured-visual-image {
    transform: none !important;
    transition: none !important;
    will-change: auto !important;
  }
}


/* v0.6.2 — Samsung Internet/Android browser tap highlight fix.
   Suppress only the browser's rectangular translucent tap flash around
   the main Play/Pause control; retain the circular press animation and
   normal :focus-visible outline for keyboard accessibility. */
@media (hover: none) and (pointer: coarse) {
  .wez-master-header .global-player #mainPlay,
  .wez-master-header .global-player #mainPlay * {
    -webkit-tap-highlight-color: transparent;
  }
}


/* v0.6.3 — project featured image width options on desktop only.
   A gentle maximum width prevents near full-screen project artwork from
   overwhelming the text; all mobile featured images remain unchanged.
   Page/post featured images and portfolio cards preserve their current sizing. */
@media (min-width: 721px) {
  .single-project-page .wez-featured-visual.wez-featured-desktop-compact {
    width: min(calc(100vw - clamp(32px, 8vw, 128px)), 720px);
  }
  .single-project-page .wez-featured-visual.wez-featured-desktop-balanced {
    width: min(calc(100vw - clamp(32px, 8vw, 128px)), 960px);
  }
  .single-project-page .wez-featured-visual.wez-featured-desktop-spacious {
    width: min(calc(100vw - clamp(32px, 8vw, 128px)), 1200px);
  }
  /* 'Original wide' continues to use the v0.5.1 near-screen-width rule. */
}


/* v0.6.4 — optional editorial split: featured image alongside introductory text.
   Only active for a project with a chosen side layout AND introduction text. */
@media (min-width: 960px) {
  .single-project-page .wez-featured-split {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: clamp(28px, 4vw, 64px);
    align-items: start;
    margin: clamp(22px, 3vw, 34px) 0 clamp(32px, 4vw, 52px);
    width: 100%;
  }
  .single-project-page .wez-featured-split .wez-featured-split-photo {
    grid-column: 1;
    grid-row: 1;
    width: var(--wez-featured-column-image-width, 85%);
    min-width: 0;
    justify-self: center;
  }
  .single-project-page .wez-featured-split.wez-featured-align-left .wez-featured-split-photo { justify-self: start; }
  .single-project-page .wez-featured-split.wez-featured-align-right .wez-featured-split-photo { justify-self: end; }
  .single-project-page .wez-featured-split .wez-featured-split-copy {
    grid-column: 2; grid-row: 1; min-width: 0;
    color: #514969; line-height: 1.72; font-size: clamp(15px, 1.2vw, 17px);
    overflow-wrap: anywhere;
  }
  .single-project-page .wez-featured-split.wez-featured-split-image-right .wez-featured-split-photo {grid-column:2;}
  .single-project-page .wez-featured-split.wez-featured-split-image-right .wez-featured-split-copy {grid-column:1;}
  /* Override near-viewport breakout and desktop image-width caps in split mode. */
  .single-project-page .wez-featured-split .wez-featured-visual,
  .single-project-page .wez-featured-split .wez-featured-visual.wez-featured-desktop-compact,
  .single-project-page .wez-featured-split .wez-featured-visual.wez-featured-desktop-balanced,
  .single-project-page .wez-featured-split .wez-featured-visual.wez-featured-desktop-spacious,
  .single-project-page .wez-featured-split .wez-featured-visual.wez-featured-desktop-original {
    position:relative; left:auto; transform:none; width:100%; max-width:100%;
    margin:0;
  }
}
.single-project-page .wez-featured-split-copy p {margin:0 0 1.1em;}
.single-project-page .wez-featured-split-copy p:last-child {margin-bottom:0;}
@media (max-width: 959px) {
  .single-project-page .wez-featured-split {display:block;}
  .single-project-page .wez-featured-split-photo {width:100%;}
  .single-project-page .wez-featured-split-copy {
    max-width: 920px; margin:0 0 30px; color:#514969;
    font-size:16px;line-height:1.7;overflow-wrap:anywhere;
  }
}

/* v0.6.5 — each project media entry gets its own brand-colour selection ring.
   The order is based on the cards' current WordPress gallery order, so moving
   an entry automatically updates its accent without storing any extra data.
   Colours repeat after six entries; inactive cards keep their neutral border. */
.wez-media-grid > .wez-media-tile {
  --wez-media-selection-colour: var(--fuchsia);
  transition: box-shadow 180ms ease;
}
.wez-media-grid > .wez-media-tile:nth-child(6n + 2) { --wez-media-selection-colour: var(--yellow); }
.wez-media-grid > .wez-media-tile:nth-child(6n + 3) { --wez-media-selection-colour: #b38ce9; } /* light purple */
.wez-media-grid > .wez-media-tile:nth-child(6n + 4) { --wez-media-selection-colour: var(--admiral); } /* blue-purple */
.wez-media-grid > .wez-media-tile:nth-child(6n + 5) { --wez-media-selection-colour: #ed78d1; } /* soft fuchsia */
.wez-media-grid > .wez-media-tile:nth-child(6n) { --wez-media-selection-colour: #d6a72e; } /* golden yellow */
.wez-media-grid > .wez-media-tile.is-selected {
  outline: 4px solid var(--wez-media-selection-colour);
  outline-offset: -4px;
  box-shadow: 0 0 0 1px rgba(44, 36, 91, .18), 0 8px 22px rgba(44, 36, 91, .12);
}
@media (prefers-reduced-motion: reduce) {
  .wez-media-grid > .wez-media-tile { transition: none; }
}

/* v0.6.6 — editable, filter-specific portfolio heroes. Headline remains one H1
   as visitors switch categories, with a theme-coloured optional accent. */
#portfolioHero .hero-copy p { white-space: pre-line; }
@media (prefers-reduced-motion: reduce) {
  #portfolioHero .hero-visual img { transition: none; }
}

/* v0.6.7 — per-category hero accent palettes, with a choice of text
   colour or a colour block behind the lettering. All variables are
   defined in CSS to prevent untrusted content becoming raw styles. */
#portfolioHero{--wez-hero-accent-bg:var(--fuchsia);--wez-hero-accent-text:#c00086;--wez-hero-accent-ink:#fff}
#portfolioHero[data-accent-color="fuchsia"]{--wez-hero-accent-bg:var(--fuchsia);--wez-hero-accent-text:#c00086;--wez-hero-accent-ink:#fff}
#portfolioHero[data-accent-color="yellow"]{--wez-hero-accent-bg:var(--yellow);--wez-hero-accent-text:#856000;--wez-hero-accent-ink:#2c245b}
#portfolioHero[data-accent-color="lilac"]{--wez-hero-accent-bg:#b38ce9;--wez-hero-accent-text:#65438d;--wez-hero-accent-ink:#2c245b}
#portfolioHero[data-accent-color="admiral"]{--wez-hero-accent-bg:var(--admiral);--wez-hero-accent-text:#373176;--wez-hero-accent-ink:#fff}
#portfolioHero[data-accent-color="pink"]{--wez-hero-accent-bg:#ed78d1;--wez-hero-accent-text:#97376b;--wez-hero-accent-ink:#2c245b}
#portfolioHero[data-accent-color="gold"]{--wez-hero-accent-bg:#d6a72e;--wez-hero-accent-text:#826009;--wez-hero-accent-ink:#2c245b}
#portfolioHero .hero-copy h1 em{color:var(--wez-hero-accent-text);background:transparent;font-style:normal}
#portfolioHero[data-accent-style="background"] .hero-copy h1 em{background:var(--wez-hero-accent-bg);color:var(--wez-hero-accent-ink);padding:.018em .13em;border-radius:.065em;box-decoration-break:clone;-webkit-box-decoration-break:clone}


/* v0.6.8 — Expanded hero palette, per-media selected ring and a coordinated
   active portfolio navigation underline (the hero's accent is the source). */
#portfolioHero[data-accent-color="ruby"]{--wez-hero-accent-bg:#c4384c;--wez-hero-accent-text:#b42c41;--wez-hero-accent-ink:#fff}
#portfolioHero[data-accent-color="jade"]{--wez-hero-accent-bg:#177c69;--wez-hero-accent-text:#176f60;--wez-hero-accent-ink:#fff}
/* Only allow named brand colours; no free-form CSS is stored in WordPress. */
:root{--wez-active-portfolio-accent:var(--fuchsia)}
:root[data-active-portfolio-accent="fuchsia"]{--wez-active-portfolio-accent:var(--fuchsia)}
:root[data-active-portfolio-accent="yellow"]{--wez-active-portfolio-accent:var(--yellow)}
:root[data-active-portfolio-accent="lilac"]{--wez-active-portfolio-accent:#b38ce9}
:root[data-active-portfolio-accent="admiral"]{--wez-active-portfolio-accent:var(--admiral)}
:root[data-active-portfolio-accent="pink"]{--wez-active-portfolio-accent:#ed78d1}
:root[data-active-portfolio-accent="gold"]{--wez-active-portfolio-accent:#d6a72e}
:root[data-active-portfolio-accent="ruby"]{--wez-active-portfolio-accent:#c4384c}
:root[data-active-portfolio-accent="jade"]{--wez-active-portfolio-accent:#177c69}
.wez-master-filters :is(button.active,a[aria-current="page"]){border-bottom-color:var(--wez-active-portfolio-accent)}
/* On phones the navigation is a dropdown, not an underline bar. Echo the
   selected accent on its checkmark and slim left-edge marker instead. */
@media(max-width:720px){
 .wez-mobile-menu-category.active{border-left:3px solid var(--wez-active-portfolio-accent);padding-left:9px}
 .wez-mobile-menu-category.active::after{color:var(--wez-active-portfolio-accent)}
}
/* The earlier positional rules continue to handle Auto. These higher-
   specificity selectors override them only for explicitly chosen colours. */
.wez-media-grid > .wez-media-tile[data-selection-color="fuchsia"]{--wez-media-selection-colour:var(--fuchsia)}
.wez-media-grid > .wez-media-tile[data-selection-color="yellow"]{--wez-media-selection-colour:var(--yellow)}
.wez-media-grid > .wez-media-tile[data-selection-color="lilac"]{--wez-media-selection-colour:#b38ce9}
.wez-media-grid > .wez-media-tile[data-selection-color="admiral"]{--wez-media-selection-colour:var(--admiral)}
.wez-media-grid > .wez-media-tile[data-selection-color="pink"]{--wez-media-selection-colour:#ed78d1}
.wez-media-grid > .wez-media-tile[data-selection-color="gold"]{--wez-media-selection-colour:#d6a72e}
.wez-media-grid > .wez-media-tile[data-selection-color="ruby"]{--wez-media-selection-colour:#c4384c}
.wez-media-grid > .wez-media-tile[data-selection-color="jade"]{--wez-media-selection-colour:#177c69}

/* v0.6.9 — a solid category-colour selection in the mobile navigation.
   The tick remains an additional non-colour cue, and the label ink switches
   for the lighter palette colours to maintain readable contrast. */
:root{--wez-active-portfolio-ink:#fff}
:root[data-active-portfolio-accent="yellow"],
:root[data-active-portfolio-accent="lilac"],
:root[data-active-portfolio-accent="pink"],
:root[data-active-portfolio-accent="gold"]{--wez-active-portfolio-ink:#241b49}
@media(max-width:720px){
  .wez-mobile-menu-filters{gap:4px}
  .wez-mobile-menu-category{
    border-radius:9px;
    padding:12px 13px;
    min-height:44px;
    transition:background-color .18s ease,color .18s ease,box-shadow .18s ease;
  }
  .wez-mobile-menu-category.active,
  .wez-mobile-dock-menu .wez-mobile-menu-category.active[aria-current="page"]{
    background:var(--wez-active-portfolio-accent);
    color:var(--wez-active-portfolio-ink)!important;
    border-left:0;
    border-bottom-color:transparent;
    padding-left:13px;
    font-weight:800;
    box-shadow:0 4px 12px rgba(30,23,67,.14);
  }
  .wez-mobile-menu-category.active::after{
    color:inherit;
    font-weight:900;
  }
  @media(hover:hover){
    .wez-mobile-menu-category:not(.active):hover{background:#f4f0fb}
  }
}
@media(max-width:720px) and (prefers-reduced-motion:reduce){
  .wez-mobile-menu-category{transition:none}
}

/* v0.7.0 — Independent blur and white-edge fade for each portfolio category hero.
   The visual stage is isolated so the effects never blur the headline or links. */
#portfolioHero{--wez-hero-image-blur:2px;--wez-hero-edge-fade:0}
#portfolioHero .wez-hero-image-stage{width:100%;position:relative;isolation:isolate;flex:none}
#portfolioHero .wez-hero-image-stage img{filter:blur(var(--wez-hero-image-blur));}
#portfolioHero .wez-hero-image-stage::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse 74% 65% at center,rgba(255,255,255,0) 36%,rgba(255,255,255,.32) 68%,#fff 100%);
  opacity:var(--wez-hero-edge-fade);transition:opacity .2s ease;
}
@media(prefers-reduced-motion:reduce){#portfolioHero .wez-hero-image-stage::after{transition:none}}


/* v0.7.1 — Optional project featured-image spotlight overlay.
   Each project independently chooses On/Off and opacity (0–100%).
   The overlay is independent of parallax movement; never captures pointer
   events or covers audio/video controls, card text or the image link focus. */
.project-card .art.wez-spotlight-on::after,
.wez-featured-visual.wez-spotlight-on::after {
  content:"";
  position:absolute;
  inset:0;
  z-index:4;
  pointer-events:none;
  opacity:var(--wez-project-spotlight-opacity,0.5);
  background:
    radial-gradient(ellipse at 72% 22%,rgba(228,119,211,.80),rgba(126,76,161,.24) 43%,transparent 73%),
    linear-gradient(130deg,rgba(55,49,118,.65),rgba(28,20,69,.64));
}
.wez-featured-visual.wez-spotlight-on { isolation:isolate; }
.wez-featured-visual.wez-spotlight-on::after {border-radius:14px;}
@media(max-width:720px){.wez-featured-visual.wez-spotlight-on::after{border-radius:9px;}}

/* v0.7.2 — Separate project logo sticker, optional per project. The white
   printed-sticker edge, shape, rotation and slight corner overlap are CSS only.
   The source artwork, parallax, spotlight and audio controls remain independent. */
.project-card.wez-project-has-sticker{position:relative;overflow:visible;isolation:isolate;}
.project-card.wez-project-has-sticker .art{border-radius:8px 8px 0 0;}
.wez-project-sticker{
  position:absolute;top:0;right:0;z-index:15;
  width:var(--wez-sticker-size,22%);aspect-ratio:1;
  transform:translate(var(--wez-sticker-shift,20%),calc(-1 * var(--wez-sticker-shift,20%))) rotate(var(--wez-sticker-angle,-8deg));
  background:#fff;border:var(--wez-sticker-border,5px) solid #fff;
  padding:clamp(4px,1vw,10px);box-sizing:border-box;display:grid;place-items:center;
  pointer-events:none;overflow:hidden;
}
.wez-project-sticker img{display:block;width:100%;height:100%;object-fit:contain;}
.wez-project-sticker-circle{border-radius:50%;}
.wez-project-sticker-square{border-radius:9%;}
.wez-project-sticker-shadow{box-shadow:0 8px 24px #2013455c,0 2px 6px #20134536;}
/* Keep card badges proportionate to the actual artwork (not card text). */
.project-card.wez-project-has-sticker .wez-project-sticker{max-width:140px;}
/* Project page: duplicate figure breakout geometry on an outer wrapper so
   overflow:hidden remains on the image figure but never crops its sticker. */
.wez-featured-sticker-wrap{
 position:relative;left:50%;transform:translateX(-50%);
 width:calc(100vw - clamp(32px, 8vw, 128px));max-width:none;
 margin:24px 0 clamp(28px, 4vw, 46px);
}
.wez-featured-sticker-wrap > .wez-featured-visual{
 position:relative;left:auto;transform:none;width:100%;max-width:100%;margin:0;
}
.wez-featured-sticker-wrap > .wez-project-sticker{max-width:180px;}
@media(min-width:721px){
 .single-project-page .wez-featured-sticker-wrap.wez-featured-desktop-compact{width:min(calc(100vw - clamp(32px, 8vw, 128px)),720px);}
 .single-project-page .wez-featured-sticker-wrap.wez-featured-desktop-balanced{width:min(calc(100vw - clamp(32px, 8vw, 128px)),960px);}
 .single-project-page .wez-featured-sticker-wrap.wez-featured-desktop-spacious{width:min(calc(100vw - clamp(32px, 8vw, 128px)),1200px);}
}
@media(min-width:960px){
 .single-project-page .wez-featured-split .wez-featured-sticker-wrap{
  position:relative;left:auto;transform:none;width:100%;max-width:100%;margin:0;
 }
}
@media(max-width:720px){
 .wez-featured-sticker-wrap{margin-top:18px;margin-bottom:27px;}
 .wez-featured-sticker-wrap > .wez-project-sticker{max-width:105px;}
 .project-card.wez-project-has-sticker .wez-project-sticker{max-width:95px;}
}
/* Keep the sticker in the mobile viewport at any angle/overlap setting.
   Vertical overlap still gives the peel-on corner appearance. */
@media(max-width:720px){
 .project-card.wez-project-has-sticker > .wez-project-sticker,
 .wez-featured-sticker-wrap > .wez-project-sticker{
   right:14px;
   transform:translateY(calc(-1 * var(--wez-sticker-shift,20%))) rotate(var(--wez-sticker-angle,-8deg));
 }
}
/* At tablet/desktop widths, avoid introducing horizontal scrolling when a
   user chooses a large square with maximum tilt and corner overlap. */
@media(min-width:721px){
 .project-card.wez-project-has-sticker > .wez-project-sticker,
 .wez-featured-sticker-wrap > .wez-project-sticker{
    right:clamp(14px,1.8vw,24px);
    transform:translateY(calc(-1 * var(--wez-sticker-shift,20%))) rotate(var(--wez-sticker-angle,-8deg));
 }
}

/* v0.7.3 — Per-project sticker cropping (does not alter original uploads). */
.wez-project-sticker img{
 object-fit:var(--wez-sticker-fit,contain);
 object-position:var(--wez-sticker-x,50%) var(--wez-sticker-y,50%);
 transform:scale(var(--wez-sticker-zoom,1));
 transform-origin:var(--wez-sticker-x,50%) var(--wez-sticker-y,50%);
}

/* v0.7.4 — accessible looping image slideshow in the existing darkened media lightbox. */
.video-dialog.wez-slideshow-dialog{width:min(var(--wez-slide-max,960px),100%);}
.video-stage.wez-slideshow-stage{position:relative;aspect-ratio:var(--wez-slide-ratio,16/9);height:auto;max-height:68vh;background:#090713;isolation:isolate;overflow:hidden;}
.wez-slideshow-image{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity var(--wez-slideshow-fade,800ms) ease;pointer-events:none;}
.wez-slideshow-controls{display:flex;align-items:center;justify-content:center;gap:14px;margin:12px 0;flex-wrap:wrap;color:white;}
.wez-slideshow-controls button{min-width:46px;min-height:42px;background:#342962;border:1px solid #b2a3d4;color:#fff;border-radius:9px;padding:8px 15px;font-weight:750;cursor:pointer;}
.wez-slideshow-controls button:hover{background:#564384;}
.wez-slideshow-controls button:focus-visible{outline:3px solid #ffe849;outline-offset:3px;}
.wez-slideshow-controls .wez-slideshow-counter{font-variant-numeric:tabular-nums;min-width:67px;text-align:center;font-size:14px;}
.video-dialog.wez-slideshow-dialog .video-dialog-footer a[hidden]{display:none;}
@media(max-width:720px){.video-stage.wez-slideshow-stage{max-height:53vh}.wez-slideshow-controls{gap:8px;}.wez-slideshow-controls button{padding:8px 11px;}}
@media(prefers-reduced-motion:reduce){.wez-slideshow-image{transition:none!important;}}


/* v0.7.5 — Keep headline descenders (g, j, p, q, y) legible when the
   following accent text has a coloured block that overlaps the line above.
   Only alter paint order: no font, spacing or responsive layout changes. */
#portfolioHero .hero-copy h1{isolation:isolate;}
#portfolioHero .hero-copy h1 .wez-hero-headline-text{position:relative;z-index:2;}
#portfolioHero .hero-copy h1 em{position:relative;z-index:1;}

/* v0.7.6 — colour-coordinated diffuse glow for the third hero accent style.
   No solid box; the shade fades into the white background around each glyph.
   Multiple soft shadows avoid a sharp outline and preserve legible text. */
#portfolioHero[data-accent-style="glow"] .hero-copy h1 em{
 color:var(--wez-hero-accent-text);
 background:transparent;
 padding:0;
 border-radius:0;
 text-shadow:
  0 0 3px color-mix(in srgb,var(--wez-hero-accent-bg) var(--wez-hero-glow-opacity,70%),transparent),
  0 0 10px color-mix(in srgb,var(--wez-hero-accent-bg) var(--wez-hero-glow-opacity,70%),transparent),
  0 0 24px color-mix(in srgb,var(--wez-hero-accent-bg) var(--wez-hero-glow-opacity,70%),transparent),
  0 0 34px color-mix(in srgb,var(--wez-hero-accent-bg) var(--wez-hero-glow-opacity,70%),transparent);
}

/* v0.7.7 — Accessible, per-project coloured hyperlinks in the editorial
   featured-image introduction. Unrelated article links are unchanged. */
.single-project-page .wez-featured-split-copy a {
  color: var(--wez-intro-link-colour, #373176);
  font-weight: 650;
  text-decoration-line: underline;
  text-decoration-color: currentColor;
  text-decoration-thickness: 1px;
  text-underline-offset: .17em;
  transition: text-decoration-thickness .15s ease, text-underline-offset .15s ease;
}
.single-project-page .wez-featured-split-copy a:hover {
  text-decoration-thickness: 2px;
  text-underline-offset: .23em;
}
.single-project-page .wez-featured-split-copy a:focus-visible {
  outline: 2px solid var(--wez-intro-link-colour, #373176);
  outline-offset: 3px;
  border-radius: 2px;
}
@media (prefers-reduced-motion: reduce) {
  .single-project-page .wez-featured-split-copy a {transition: none;}
}

/* v0.7.8 — Up to three supporting pictures immediately beneath a project's
 * main featured image. Shares the featured image width/crop settings, without
 * changing the homepage cards, editorial text, stickers or media playback. */
.single-project-page .wez-featured-image-stack {
  position:relative;left:50%;transform:translateX(-50%);
  width:calc(100vw - clamp(32px,8vw,128px));max-width:none;
  margin:24px 0 clamp(28px,4vw,46px);
}
.single-project-page .wez-featured-image-stack > .wez-featured-visual,
.single-project-page .wez-featured-image-stack > .wez-featured-sticker-wrap {
  position:relative;left:auto;transform:none;width:100%;max-width:100%;margin:0;
}
.single-project-page .wez-featured-supporting-images {
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(6px,0.8vw,10px);
  margin-top:10px;
}
.single-project-page .wez-featured-support-image {margin:0;min-width:0;overflow:hidden;border-radius:8px;aspect-ratio:4/3;background:#f2effa;}
.single-project-page .wez-featured-support-image img {
  display:block;width:100%;height:100%;object-fit:cover;object-position:center;
  border-radius:inherit;
}
@media (min-width:721px){
  .single-project-page .wez-featured-image-stack.wez-featured-desktop-compact{width:min(calc(100vw - clamp(32px,8vw,128px)),720px);}
  .single-project-page .wez-featured-image-stack.wez-featured-desktop-balanced{width:min(calc(100vw - clamp(32px,8vw,128px)),960px);}
  .single-project-page .wez-featured-image-stack.wez-featured-desktop-spacious{width:min(calc(100vw - clamp(32px,8vw,128px)),1200px);}
}
@media (min-width:960px){
  .single-project-page .wez-featured-split .wez-featured-image-stack {
    position:relative;left:auto;transform:none;width:100%;margin:0;
  }
  .single-project-page .wez-featured-split .wez-featured-image-stack > .wez-featured-visual,
  .single-project-page .wez-featured-split .wez-featured-image-stack > .wez-featured-sticker-wrap {
    width:100%;max-width:100%;margin:0;left:auto;transform:none;
  }
}
@media(max-width:959px){
  .single-project-page .wez-featured-split .wez-featured-image-stack {margin-bottom:24px;}
}
@media(max-width:720px){
  .single-project-page .wez-featured-image-stack {margin-top:18px;}
  .single-project-page .wez-featured-supporting-images {gap:6px;margin-top:8px;}
  .single-project-page .wez-featured-support-image {border-radius:6px;}
}

/* v0.7.9 — the played waveform reflects the current media item's selected
   border. Unplayed bars remain grey and the audio transport is unchanged. */
.waveform{--wez-wave-played:var(--fuchsia)}
.waveform .wavebar.past{background:var(--wez-wave-played)}
/* Admiral uses a clean solid-white waveform, with no lavender outline. */
.waveform[data-wave-tone="normal"] .wavebar.past { box-shadow:none; }


/* v0.7.11 — Independent media-action buttons, including optional external links.
   The normal & hover palette is set safely per media item by Portfolio Manager.
   Pointer/keyboard/hover animations are optional and honour reduced motion. */
.wez-media-actions .wez-media-action-button {
  display:inline-flex;align-items:center;justify-content:center;gap:4px;
  padding:9px 12px;min-height:34px;font-weight:800;font-size:11px;
  line-height:1.25;text-decoration:none;cursor:pointer;max-width:100%;
  white-space:normal;overflow-wrap:anywhere;text-align:center;
  border:1px solid var(--wez-btn-border,#dfd7f3);
  border-radius:var(--wez-btn-radius,5px);
  background:var(--wez-btn-bg,#f1edfb);color:var(--wez-btn-text,#29204e);
  transition:background-color .18s ease,color .18s ease,border-color .18s ease;
  transform-origin:center;
}
.wez-media-actions .wez-media-action-button:hover,
.wez-media-actions .wez-media-action-button:focus-visible {
  background:var(--wez-btn-hover-bg,#ffe648);
  border-color:var(--wez-btn-hover-bg,#ffe648);
  color:var(--wez-btn-hover-text,#29204e);
  text-decoration:none;
}
.wez-media-actions .wez-media-action-button:focus-visible {
  outline:2px solid var(--wez-btn-text,#29204e);
  outline-offset:3px;
}
@media(prefers-reduced-motion:reduce){
  .wez-media-actions .wez-media-action-button{transition:none!important;animation:none!important}
}

/* v0.7.12 — translucent music-wave divider on individual portfolio projects.
   Placed between the "Back to the Portfolio" link and global contact section. */
.wez-project-sound-divider {
  width: min(1370px, calc(100% - 32px));
  margin: 0 auto;
  padding: clamp(8px, 2.8vw, 38px) 0 clamp(18px, 3.6vw, 44px);
  overflow: hidden;
  pointer-events: none;
  user-select: none;
}
.wez-project-sound-divider img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  opacity: .84;
  transform-origin: center center;
  animation: wez-divider-gentle-flow 11s ease-in-out infinite;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 5%, #000 95%, transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0, #000 5%, #000 95%, transparent 100%);
}
@keyframes wez-divider-gentle-flow {
  0%, 100% { opacity: .65; transform: translateX(-.4%) scale(1); }
  50% { opacity: 1; transform: translateX(.4%) scale(1.012); }
}
@media(max-width:720px) {
  .wez-project-sound-divider {
    width: calc(100% - 16px);
    padding: 13px 0 27px;
  }
}
@media(prefers-reduced-motion:reduce) {
  .wez-project-sound-divider img { animation: none !important; opacity: .92; transform: none; }
}

/* v0.7.13 — reuse the original translucent waveform on the home portfolio.
   The first appears after the dynamically filtered gallery, before About Me.
   The second appears after Services, before Contact Me.
   Both share the v0.7.12 fade/drift animation and reduced-motion behaviour. */
.wez-home-work { padding-bottom: clamp(18px, 3vw, 40px); }
.wez-home-sound-divider {
  width: min(1250px, calc(100% - 32px));
  padding: clamp(8px, 1.6vw, 20px) 0 clamp(16px, 3vw, 34px);
}
.wez-before-contact img { animation-delay: -5.5s; }
@media (max-width: 720px) {
  .wez-home-work { padding-bottom: 20px; }
  .wez-home-sound-divider {
    width: calc(100% - 16px);
    padding: 12px 0 25px;
  }
}

/* v0.7.14 — Make the animated wave the actual section divider.
   Remove the old 1px rules only where a wave is directly adjacent.
   Gently overlap the wave with the incoming section so there is no
   stranded white gap between the artwork and the section transition. */
.wez-project-sound-divider {
  position: relative;
  z-index: 2;
  margin-bottom: clamp(-130px, -9.4vw, -47px);
}

/* Homepage portfolio gallery -> About Me: the wave replaces the old border. */
.wez-before-about + section#about.about-section {
  border-top: 0;
  padding-top: clamp(75px, 8vw, 115px);
}

/* Contact Me on the homepage and individual portfolio project pages. */
.wez-project-sound-divider + section#contact.wez-contact-section {
  border-top: 0;
  padding-top: clamp(75px, 8vw, 110px);
}

@media (max-width: 720px) {
  .wez-project-sound-divider {
    margin-bottom: -47px;
  }
  .wez-before-about + section#about.about-section {
    padding-top: 65px;
  }
  .wez-project-sound-divider + section#contact.wez-contact-section {
    padding-top: 72px;
  }
}

/* v0.7.15 — Optional photo and editable homepage About Me content.
   Without a photo, existing .about-grid two-column layout is preserved. */
#about .wez-about-head,
#about .wez-about-body {min-width:0;}
#about .wez-about-with-image {
  display:grid;
  grid-template-columns:minmax(0,1.07fr) minmax(0,.93fr);
  grid-template-areas:"head photo" "body photo";
  grid-template-rows:auto 1fr;
  align-items:start;
  column-gap:clamp(24px,4.5vw,72px);
  row-gap:0;
}
#about .wez-about-with-image.wez-about-photo-left {
  grid-template-columns:minmax(0,.93fr) minmax(0,1.07fr);
  grid-template-areas:"photo head" "photo body";
}
#about .wez-about-with-image .wez-about-head {grid-area:head;align-self:end;}
#about .wez-about-with-image .wez-about-body {grid-area:body;align-self:start;}
#about .wez-about-photo {grid-area:photo;align-self:center;width:100%;min-width:0;margin:0;}
#about .wez-about-photo-img {
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:4/5;
  object-fit:cover;
  border-radius:18px;
  box-shadow:0 18px 48px rgba(44,36,91,.13);
}
#about .wez-about-fit-contain .wez-about-photo-img {object-fit:contain;aspect-ratio:auto;}
#about .wez-about-with-image .about-stats {gap:clamp(13px,2.5vw,24px);}
@media(max-width:720px) {
  #about .wez-about-with-image,
  #about .wez-about-with-image.wez-about-photo-left {
    grid-template-columns:minmax(0,1fr);
    grid-template-areas:"head" "body" "photo";
    grid-template-rows:auto;
    gap:0;
  }
  #about .wez-about-photo {margin-top:27px;}
  #about .wez-about-photo-img {max-height:520px;aspect-ratio:4/3;object-position:center 35%;}
  #about .wez-about-fit-contain .wez-about-photo-img {max-height:none;aspect-ratio:auto;}
}

/* v0.7.16 — uncluttered project video modal / privacy controls */
.wez-screen-reader-only {
  position:absolute!important;width:1px!important;height:1px!important;
  padding:0!important;margin:-1px!important;overflow:hidden!important;
  clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;
}
/* Preserve the title for accessible screen readers but remove the visible,
   encoded HTML entity heading above the actual Vimeo/YouTube video frame. */
.video-dialog-heading {justify-content:flex-end;}
.video-dialog-heading h2.wez-screen-reader-only {position:absolute!important;}
.wez-footer-privacy {display:flex;align-items:center;flex-wrap:wrap;gap:12px 18px;}
.wez-footer-privacy a,.wez-footer-cookie-button {
  font:inherit;font-size:12px;color:inherit;line-height:1.5;
  text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;
}
.wez-footer-cookie-button {border:0;padding:0;background:none;cursor:pointer;}
.wez-footer-privacy a:hover,.wez-footer-cookie-button:hover {color:var(--yellow);}
.wez-footer-privacy a:focus-visible,.wez-footer-cookie-button:focus-visible {outline:2px solid var(--yellow);outline-offset:3px;}
/* [hidden] must prevail over standard banner display rules. */
.wez-cookie-banner[hidden]{display:none!important;}
.wez-cookie-banner {
  position:fixed;right:clamp(14px,2.5vw,34px);bottom:clamp(14px,2.5vw,30px);
  z-index:2100;width:min(490px,calc(100vw - 28px));box-sizing:border-box;
  padding:23px 25px 22px;background:linear-gradient(155deg,#fff,#f5f0ff);
  color:#261b50;border:1px solid rgba(68,42,113,.16);border-radius:22px;
  box-shadow:0 22px 65px rgba(15,9,42,.23);overflow:hidden;
  font-family:Manrope,'DM Sans',sans-serif;
}
.wez-cookie-accent {position:absolute;top:-24px;right:-21px;width:142px;height:76px;
  opacity:.62;pointer-events:none;background:url('assets/img/project-soundwave-divider.webp') center/cover no-repeat;}
.wez-cookie-banner h2 {position:relative;font-size:21px;font-weight:800;letter-spacing:-.055em;line-height:1.2;margin:0 0 10px;max-width:78%;}
.wez-cookie-banner p {position:relative;color:#655a82;font:400 13px/1.65 'DM Sans',sans-serif;margin:0 0 18px;max-width:450px;}
.wez-cookie-actions {display:flex;align-items:center;flex-wrap:wrap;gap:10px 11px;}
.wez-cookie-actions button {border-radius:12px;min-height:45px;padding:10px 22px;font:800 13px Manrope,sans-serif;cursor:pointer;flex:1 1 112px;}
.wez-cookie-accept {border:2px solid var(--yellow);background:var(--yellow);color:var(--purple);}
.wez-cookie-reject {border:2px solid #7153b7;background:#fff;color:var(--purple);}
.wez-cookie-actions button:hover {filter:brightness(.96);}
.wez-cookie-actions :focus-visible {outline:3px solid var(--fuchsia);outline-offset:3px;}
.wez-cookie-policy {text-align:center;font:700 12px 'DM Sans',sans-serif;color:#633eb5;text-decoration:underline;text-underline-offset:2px;flex:1 1 95px;}
/* Per-video informed choice: Vimeo and YouTube are never loaded beforehand. */
.video-stage.wez-external-media-placeholder {
  background:radial-gradient(circle at 65% 25%,#44317a,#17112a 72%);
  padding:26px;box-sizing:border-box;
}
.wez-video-consent-panel {text-align:center;max-width:525px;color:#fff;}
.wez-video-consent-panel h3 {font:800 clamp(21px,3vw,32px)/1.2 Manrope,sans-serif;margin:0 0 12px;}
.wez-video-consent-panel p {color:#e0d9f8;font:400 clamp(12px,1.65vw,15px)/1.65 'DM Sans',sans-serif;margin:0 auto 20px;}
.wez-video-consent-once {border:0;border-radius:13px;background:var(--yellow);color:#23153e;
  padding:14px 24px;min-height:49px;cursor:pointer;font:800 14px Manrope,sans-serif;}
.wez-video-consent-once:hover{filter:brightness(.94);}
.wez-video-consent-once:focus-visible {outline:3px solid var(--fuchsia);outline-offset:4px;}
@media(max-width:720px){
  .wez-footer-privacy{justify-content:center;gap:9px 20px;}
  .wez-cookie-banner{bottom:max(12px,env(safe-area-inset-bottom));right:12px;width:calc(100vw - 24px);padding:18px 17px 16px;border-radius:17px;}
  .wez-cookie-banner h2{font-size:19px;}
  .wez-cookie-banner p{font-size:12px;line-height:1.5;}
  .wez-cookie-actions{gap:9px;}
  .wez-cookie-actions button{min-height:43px;flex:1 1 calc(50% - 5px);}
  .wez-cookie-policy{flex:1 1 100%;text-align:center;padding-top:2px;}
  .video-stage.wez-external-media-placeholder{padding:12px;}
  .wez-video-consent-panel h3{font-size:18px;margin-bottom:6px;}
  .wez-video-consent-panel p{font-size:11px;line-height:1.4;margin-bottom:10px;}
  .wez-video-consent-once{min-height:38px;padding:9px 13px;font-size:12px;}
}
@media(prefers-reduced-motion:reduce){.wez-cookie-banner,.wez-video-consent-once{animation:none!important;transition:none!important;}}


/* v0.7.17 — Games category: compact music-first cue browser. Uses the existing
   selected media and top audio player; no thumbnails or separate audio embeds. */
#gallery[hidden], #wezGamesLibrary[hidden] {display:none!important}
.wez-games-library{margin-top:22px}
.wez-games-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;align-items:stretch}
.wez-game-cue{position:relative;min-width:0;overflow:hidden;border:1px solid #e6dff4;border-radius:14px;background:linear-gradient(125deg,#fff 0%,#fbf9ff 100%);box-shadow:0 5px 22px rgba(45,33,92,.045);transition:box-shadow .2s ease,border-color .2s ease,transform .2s ease}
.wez-game-cue:hover{transform:translateY(-2px);box-shadow:0 9px 25px rgba(45,33,92,.1);border-color:var(--wez-cue-accent)}
.wez-game-cue.is-active{border-color:var(--wez-cue-accent);background:linear-gradient(120deg,#fff9e6 0%,#fff 49%,#f7f1ff 100%);box-shadow:0 8px 25px rgba(45,33,92,.12)}
.wez-game-cue-button{position:relative;display:grid;grid-template-columns:39px minmax(0,1fr) auto;column-gap:12px;row-gap:9px;align-items:start;text-align:left;width:100%;min-height:116px;border:0;background:transparent;padding:16px 15px 13px;color:var(--purpledeep);cursor:pointer}
.wez-game-cue-icon{display:grid;place-items:center;width:36px;height:36px;border:1px solid #d9d0ed;border-radius:50%;font-size:13px;line-height:1;color:var(--purple);background:white;transition:background .15s ease,border-color .15s ease}
.wez-game-cue-button:hover .wez-game-cue-icon,.wez-game-cue.is-active .wez-game-cue-icon{background:var(--yellow);border-color:var(--yellow);color:#241d49}
.wez-game-cue-copy{display:flex;min-width:0;flex-direction:column;gap:4px}
.wez-game-cue-title{display:block;font:800 15px/1.3 Manrope,'DM Sans',sans-serif;letter-spacing:-.018em;overflow-wrap:anywhere}
.wez-game-cue-desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font:500 11px/1.4 'DM Sans',Arial,sans-serif;color:#696083;overflow-wrap:anywhere}
.wez-game-cue-tag{display:inline-flex;align-items:center;justify-content:center;max-width:92px;padding:4px 9px;border-radius:20px;background:color-mix(in srgb,var(--wez-cue-accent) 26%,white 74%);color:#32275f;font-size:10px;font-weight:800;line-height:1.15;text-align:center;overflow-wrap:anywhere}
.wez-game-cue-bars{display:flex;align-items:center;justify-content:flex-end;gap:2px;grid-column:2/4;height:20px;overflow:hidden;opacity:.65;pointer-events:none}
.wez-game-cue-bars span{flex:0 1 3px;width:3px;min-width:2px;border-radius:6px;background:var(--wez-cue-accent);opacity:.75;transition:opacity .18s ease}
.wez-game-cue.is-playing .wez-game-cue-bars span{animation:wez-game-bars-pulse .82s ease-in-out infinite alternate;animation-delay:calc(var(--wave-index,0) * 50ms);opacity:1}
.wez-game-cue.is-playing .wez-game-cue-bars span:nth-child(3n){animation-duration:1.05s}
.wez-game-cue.is-playing .wez-game-cue-bars span:nth-child(4n){animation-duration:.64s}
@keyframes wez-game-bars-pulse{from{transform:scaleY(.46)}to{transform:scaleY(1)}}
.wez-games-empty{padding:30px 24px;border-radius:14px;border:1px dashed #d9cfe8;background:#faf8ff;text-align:center;color:#5a4c7d}
.wez-games-admin-hint{font-size:12px;color:#74678e}
.album-square.wez-games-album{background:linear-gradient(135deg,#373176,#8240bb 67%,#f28dcd)!important}
.album-square.wez-games-album::before{content:'♫';position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:30px;font-weight:700;z-index:2;line-height:1}
.album-square.wez-games-album span{display:none}
@media(max-width:1050px){.wez-games-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.wez-games-grid{grid-template-columns:1fr;gap:12px}.wez-game-cue-button{min-height:98px;padding:12px 13px;grid-template-columns:37px minmax(0,1fr) auto;gap:7px 10px}.wez-game-cue-title{font-size:14px}.wez-game-cue-desc{font-size:11px}.wez-game-cue-icon{width:34px;height:34px}.wez-games-library{margin-top:15px}}
@media(prefers-reduced-motion:reduce){.wez-game-cue,.wez-game-cue-icon{transition:none!important}.wez-game-cue.is-playing .wez-game-cue-bars span{animation:none!important}.wez-game-cue:hover{transform:none}}

/* v0.7.18 — Games cue play/pause has the same tactile bounce as the
   shared player. The animation is confined to the yellow circular icon,
   not the full tile, and plays when pressed with mouse, touch or keyboard. */
.wez-game-cue-icon { transform-origin: center center; }
.wez-game-cue-button.wez-tactile-press .wez-game-cue-icon {
  animation: wez-play-tactile 370ms cubic-bezier(.22,.72,.2,1) 1;
}
@media (prefers-reduced-motion: reduce) {
  .wez-game-cue-button.wez-tactile-press .wez-game-cue-icon { animation: none !important; }
}

/* v0.7.20 — discourage mobile long-press/save and dragging of displayed
   images/media while keeping normal links, playback and text selection. */
html.wez-protected-media img,
html.wez-protected-media picture,
html.wez-protected-media video,
html.wez-protected-media audio,
html.wez-protected-media canvas,
html.wez-protected-media .featured-image,
html.wez-protected-media .wez-featured-visual,
html.wez-protected-media .wez-slideshow-image {
    -webkit-user-drag:none;
    -webkit-touch-callout:none;
    -webkit-user-select:none;
    user-select:none;
}

/* 0.7.21 — silent animated covers. Still image is always the initial poster.
   Layers remain under the existing project button, image link and spotlight. */
.project-card .art .wez-tile-preview {
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  z-index:1;opacity:0;pointer-events:none;display:block;
  transition:opacity .48s ease; background:transparent;
}
.project-card .art.wez-preview-active .wez-tile-preview{opacity:1}
@media(prefers-reduced-motion:reduce){.project-card .art .wez-tile-preview{display:none!important;transition:none!important}}


/* v0.7.22 — optional 2×2 editorial image gallery in What I Create.
   The original two-column text layout remains untouched until enabled. */
#services .wez-services-with-gallery {
  grid-template-columns: minmax(0,1fr) minmax(0,1fr);
  column-gap: clamp(24px,4vw,50px);
  align-items: start;
}
#services .wez-services-with-gallery .wez-services-lead,
#services .wez-services-with-gallery .wez-services-body {min-width:0;}
#services .wez-services-gallery {
  --wez-services-gallery-gap: 12px;
  --wez-services-gallery-radius: 14px;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--wez-services-gallery-gap);
  margin-top:clamp(20px,3vw,34px);
  width:100%;
}
#services .wez-services-gallery-item {
  min-width:0;
  margin:0;
  aspect-ratio:1 / 1;
  overflow:hidden;
  border-radius:var(--wez-services-gallery-radius);
  background:#f2edfa;
  box-shadow:0 4px 20px rgba(43,29,89,.09);
  border:1px solid rgba(61,44,112,.075);
}
#services .wez-services-gallery-image {
  display:block;
  width:100%;
  height:100%;
  aspect-ratio:1 / 1;
  object-fit:cover;
  object-position:center;
}
#services .wez-services-gallery-contain .wez-services-gallery-image {object-fit:contain;}
@media(max-width:720px) {
  #services .wez-services-with-gallery {
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:0;
  }
  #services .wez-services-with-gallery .wez-services-lead {display:contents;}
  #services .wez-services-with-gallery .wez-services-heading {order:1;}
  #services .wez-services-with-gallery .wez-services-body {order:2;margin-top:8px;}
  #services .wez-services-with-gallery .wez-services-gallery {
    order:3;
    margin-top:24px;
    margin-bottom:6px;
  }
}

/* v0.7.23: unobtrusive Coming Soon card with separate playable media controls */
.wez-project-coming-soon .art{isolation:isolate}
.wez-project-coming-soon .portfolio-art-link{border:0;background:transparent;width:100%;padding:0;cursor:pointer}
.wez-coming-name{display:block;border:0;background:transparent;cursor:pointer;padding:0;text-align:left}
.wez-project-coming-soon .card-media-label{background:#f1eafa;color:#58358f}
.wez-project-coming-soon .card-bottom [data-coming-trigger]{color:var(--purple);cursor:pointer}
.wez-project-coming-soon .card-bottom [data-coming-trigger]:hover{color:var(--fuchsia)}
.wez-coming-overlay{position:absolute;inset:0;z-index:15;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:9px;padding:28px 40px;background:linear-gradient(145deg,rgba(29,22,66,.91),rgba(73,38,107,.89));color:#fff;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .23s ease,visibility .23s ease}
.wez-project-coming-soon.wez-coming-open .wez-coming-overlay{opacity:1;visibility:visible;pointer-events:auto}
.wez-coming-kicker{font-size:10px;font-weight:800;letter-spacing:.19em;color:#f2c8ff}
.wez-coming-overlay strong{font:800 clamp(17px,2vw,25px)/1.22 Manrope,sans-serif;letter-spacing:-.035em}
.wez-coming-overlay>span:last-child{font-size:12px;max-width:250px;line-height:1.55;color:#f0e6fc}
.wez-coming-close{position:absolute;right:10px;top:8px;width:33px;height:33px;background:transparent;color:#fff;border:0;font-size:27px;line-height:1;cursor:pointer}
.wez-project-coming-soon.wez-coming-open .preview-control{z-index:17}
@media(prefers-reduced-motion:reduce){.wez-coming-overlay{transition:none}}

/* v0.7.24: keep Coming Soon media playback controls above its image/overlay. */
.wez-project-coming-soon .preview-control{z-index:20;pointer-events:auto}
.wez-project-coming-soon .portfolio-art-link{z-index:2}


/* v0.7.25 — Games is a music-first category, so its hero contains text only.
   Keep the other portfolio heroes untouched and avoid an empty image column. */
#portfolioHero[data-hero-category="games"] { min-height:0; }
#portfolioHero[data-hero-category="games"] .hero-inner {
  display:block;
  padding-top:64px!important;
  padding-bottom:64px;
}
#portfolioHero[data-hero-category="games"] .hero-copy { max-width:980px; }
#portfolioHero[data-hero-category="games"] .hero-copy p { max-width:720px; }
#portfolioHero[data-hero-category="games"] .hero-visual { display:none!important; }
@media(max-width:720px) {
  #portfolioHero[data-hero-category="games"] .hero-inner {
    padding-top:30px!important;
    padding-bottom:32px;
  }
}
