/*
Theme Name: Ewan Connolly Voice
Theme URI: https://nollystudio.co.uk/
Author: Nolly Studio
Description: Cinematic interactive portfolio theme for voice actor Ewan Connolly.
Version: 1.3.1
Text Domain: ewanvoice
*/

:root{--ink:#050608;--panel:#0b0d11;--paper:#f1eee6;--muted:#969ba5;--blue:#258cff;--cyan:#51d8ff;--red:#e94545;--gold:#f0a43a;--line:rgba(255,255,255,.13);--max:1320px;--header:82px}
*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--ink)}body{margin:0;background:var(--ink);color:var(--paper);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.18;z-index:20;background-image:radial-gradient(rgba(255,255,255,.5) .55px,transparent .7px);background-size:5px 5px;mix-blend-mode:soft-light}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.site-header{height:var(--header);position:fixed;top:0;left:0;right:0;z-index:50;background:rgba(5,6,8,.82);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}.header-inner{height:100%;max-width:var(--max);margin:auto;padding:0 26px;display:flex;align-items:center;gap:35px}.brand{display:flex;align-items:center;gap:13px;margin-right:auto}.brand-wave{width:55px;height:33px;display:flex;align-items:center;gap:3px}.brand-wave i{width:2px;background:var(--blue);display:block;box-shadow:0 0 8px var(--blue);animation:wave 1.4s ease-in-out infinite}.brand-wave i:nth-child(1),.brand-wave i:nth-child(7){height:14px}.brand-wave i:nth-child(2),.brand-wave i:nth-child(6){height:25px;animation-delay:.1s}.brand-wave i:nth-child(3),.brand-wave i:nth-child(5){height:33px;animation-delay:.2s}.brand-wave i:nth-child(4){height:19px;animation-delay:.3s}@keyframes wave{50%{transform:scaleY(.5)}}.brand-text strong{display:block;font-family:"Arial Narrow",Impact,sans-serif;font-stretch:condensed;letter-spacing:.13em;font-size:15px}.brand-text span{font-size:9px;letter-spacing:.25em;color:var(--blue);text-transform:uppercase}.nav-links{display:flex;align-items:center;gap:28px;font-size:12px;font-weight:750;letter-spacing:.16em;text-transform:uppercase}.nav-links a{position:relative;padding:31px 0}.nav-links a:after{content:"";position:absolute;left:0;right:100%;bottom:20px;height:2px;background:var(--blue);transition:.25s}.nav-links a:hover:after{right:0}.header-cta,.button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 22px;border:1px solid var(--blue);background:transparent;color:#fff;text-transform:uppercase;font-size:11px;font-weight:800;letter-spacing:.14em;cursor:pointer;transition:.25s}.header-cta:hover,.button:hover{background:var(--blue);box-shadow:0 0 28px rgba(37,140,255,.3)}.menu-toggle{display:none;background:none;border:0;color:white;font-size:24px}
.hero{min-height:100svh;position:relative;padding:calc(var(--header) + 80px) 24px 75px;display:flex;align-items:center;isolation:isolate;background:radial-gradient(circle at 67% 40%,rgba(37,140,255,.13),transparent 28%),linear-gradient(130deg,#090b10 0%,#040507 60%)}.hero:after{content:"";position:absolute;inset:var(--header) 0 0;z-index:-2;background:linear-gradient(115deg,transparent 0 48%,rgba(255,255,255,.025) 48.1% 49%,transparent 49.1%),repeating-linear-gradient(165deg,transparent 0 82px,rgba(255,255,255,.025) 83px 84px)}.hero-inner{width:min(var(--max),100%);margin:auto;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;position:relative;z-index:3}.eyebrow{color:var(--blue);font-size:11px;font-weight:800;letter-spacing:.28em;text-transform:uppercase;margin:0 0 20px}.hero h1,.section-title{font-family:Impact,"Arial Narrow",sans-serif;font-weight:900;text-transform:uppercase;line-height:.83;letter-spacing:-.025em;margin:0}.hero h1{font-size:clamp(72px,8.8vw,145px);text-shadow:5px 5px 0 rgba(37,140,255,.17)}.hero-sub{margin:26px 0 30px;font-family:"Arial Narrow",sans-serif;text-transform:uppercase;letter-spacing:.17em;font-size:clamp(15px,1.45vw,22px);font-weight:700}.hero-sub b{color:var(--blue)}.showreel-button{display:inline-flex;align-items:center;gap:17px;border:0;background:none;color:white;padding:0;cursor:pointer;text-align:left}.play-circle{width:74px;height:74px;border:2px solid white;border-radius:50%;display:grid;place-items:center;transition:.3s}.play-circle:before{content:"";border-top:11px solid transparent;border-bottom:11px solid transparent;border-left:17px solid var(--blue);margin-left:5px}.showreel-button:hover .play-circle{border-color:var(--blue);transform:scale(1.06);box-shadow:0 0 30px rgba(37,140,255,.3)}.play-copy strong{display:block;text-transform:uppercase;letter-spacing:.14em;font-size:14px}.play-copy small{display:block;margin-top:5px;color:var(--muted);font-size:11px}.hero-portrait{position:relative;align-self:end;height:min(74vh,760px);display:flex;align-items:flex-end;justify-content:center}.hero-portrait:before{content:"";position:absolute;width:85%;aspect-ratio:1;border:1px solid rgba(37,140,255,.22);border-radius:50%;bottom:5%;box-shadow:0 0 100px rgba(37,140,255,.1),inset 0 0 80px rgba(37,140,255,.08)}.hero-portrait img{position:relative;z-index:2;max-height:100%;max-width:100%;object-fit:contain;filter:drop-shadow(0 25px 50px #000)}.ink-cut{position:absolute;inset:auto 0 0;height:22%;z-index:4;background:linear-gradient(176deg,transparent 0 20%,var(--ink) 21% 100%);pointer-events:none}
.side-character{position:absolute;z-index:2;width:min(25vw,380px);top:var(--char-top,25%);transform:translateX(var(--char-shift));transition:transform .75s cubic-bezier(.2,.8,.2,1),filter .3s;filter:saturate(.7) brightness(.7);cursor:pointer}.side-character.left{left:0;--char-shift:-66%}.side-character.right{right:0;--char-shift:66%}.side-character.is-visible,.side-character:hover{--char-shift:0%;filter:saturate(1) brightness(1)}.side-character img{display:block;width:100%;max-height:520px;object-fit:contain}.char-prompt{position:absolute;bottom:8%;left:50%;transform:translateX(-50%);white-space:nowrap;background:#090a0d;border:1px solid var(--char-accent,var(--blue));padding:9px 13px;text-transform:uppercase;font-size:9px;letter-spacing:.16em;opacity:0;transition:.25s}.side-character:hover .char-prompt,.side-character.is-playing .char-prompt{opacity:1}.char-prompt:before{content:"▶";color:var(--char-accent,var(--blue));margin-right:7px}
.section{position:relative;padding:110px 24px}.section-inner{max-width:var(--max);margin:auto}.section-kicker{display:flex;align-items:center;gap:12px;color:var(--blue);text-transform:uppercase;font-weight:800;font-size:10px;letter-spacing:.26em;margin-bottom:18px}.section-kicker:before{content:"";width:42px;height:2px;background:var(--blue)}.section-title{font-size:clamp(52px,6.5vw,104px)}.section-lead{max-width:650px;color:#c4c7ce;line-height:1.8;font-size:17px}.voices{background:linear-gradient(180deg,var(--ink),#090b10)}.voice-toolbar{margin:40px 0 28px;display:flex;gap:10px;flex-wrap:wrap}.filter-button{border:1px solid var(--line);background:#0b0d11;color:#aaa;padding:10px 15px;cursor:pointer;text-transform:uppercase;font-size:10px;font-weight:800;letter-spacing:.14em}.filter-button.active,.filter-button:hover{color:white;border-color:var(--blue);background:rgba(37,140,255,.1)}.voice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.voice-card{position:relative;background:linear-gradient(145deg,#11151c,#080a0d);border:1px solid var(--line);padding:26px;min-height:235px;overflow:hidden;transition:.3s}.voice-card:hover{border-color:var(--card-accent,var(--blue));transform:translateY(-5px)}.voice-number{font-family:Impact,sans-serif;font-size:60px;line-height:1;color:rgba(255,255,255,.035);position:absolute;right:18px;top:12px}.voice-card h3{text-transform:uppercase;letter-spacing:.08em;margin:4px 0 8px;font-size:20px}.voice-tags{color:var(--muted);font-size:12px;min-height:38px}.waveform{height:43px;display:flex;align-items:center;gap:3px;margin:18px 0}.waveform i{display:block;width:3px;height:var(--h);background:var(--card-accent,var(--blue));opacity:.7;border-radius:2px}.voice-card.is-playing .waveform i{animation:wave .6s ease-in-out infinite alternate;animation-delay:calc(var(--i)*.04s)}.card-player{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:16px}.card-play{border:0;background:none;color:white;padding:0;cursor:pointer;text-transform:uppercase;font-size:10px;font-weight:800;letter-spacing:.15em}.card-play:before{content:"▶";color:var(--card-accent,var(--blue));margin-right:8px}.duration{font-variant-numeric:tabular-nums;color:#777;font-size:11px}
.about{background:#ece8df;color:#121318;overflow:hidden}.about:before{content:"";position:absolute;inset:0;opacity:.13;background:repeating-linear-gradient(-8deg,transparent 0 10px,#111 11px)}.about-grid{position:relative;display:grid;grid-template-columns:.8fr 1.2fr;gap:9%;align-items:center}.about-image{position:relative}.about-image img{width:100%;display:block;filter:grayscale(1) contrast(1.08)}.about-image:after{content:"";position:absolute;inset:12px -12px -12px 12px;border:3px solid var(--blue);z-index:-1}.about .section-kicker,.about strong{color:#126dcc}.about .section-title{font-size:clamp(50px,5.4vw,86px)}.about-copy{font-size:16px;line-height:1.85;color:#3c4048}.stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #c2beb5;margin-top:32px;padding-top:24px;gap:20px}.stat strong{font-family:Impact,sans-serif;font-size:36px;display:block;color:#111}.stat span{text-transform:uppercase;font-size:9px;letter-spacing:.15em;color:#777}.text-link{display:inline-block;margin-top:28px;border-bottom:2px solid var(--blue);padding-bottom:6px;text-transform:uppercase;font-weight:900;font-size:11px;letter-spacing:.15em}
.credits{background:#07080b}.credit-list{margin-top:40px;border-top:1px solid var(--line)}.credit-row{display:grid;grid-template-columns:80px 1.4fr 1fr 100px;gap:20px;align-items:center;padding:24px 5px;border-bottom:1px solid var(--line);transition:.25s}.credit-row:hover{padding-left:16px;background:rgba(37,140,255,.06)}.credit-index{color:var(--blue);font-size:11px;font-weight:800}.credit-row h3{margin:0;text-transform:uppercase;letter-spacing:.06em}.credit-row p{margin:0;color:var(--muted);font-size:13px}.credit-year{text-align:right;color:#777}
.testimonials{background:radial-gradient(circle at 20% 50%,rgba(233,69,69,.08),transparent 35%),#0b0c10}.quote-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px;margin-top:40px}.quote{border:1px solid var(--line);padding:28px;background:rgba(0,0,0,.25)}.quote:before{content:"“";font-family:Georgia,serif;color:var(--blue);font-size:70px;line-height:.5}.quote blockquote{margin:20px 0;line-height:1.7;color:#d1d3d8}.quote cite{font-style:normal;font-size:11px;text-transform:uppercase;letter-spacing:.1em}.quote cite span{display:block;color:var(--muted);margin-top:5px;text-transform:none;letter-spacing:0}
.contact{background:linear-gradient(115deg,#11151c,#050608)}.contact-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:8%;align-items:start}.contact-copy .section-title{font-size:clamp(58px,7vw,110px)}.contact-form{display:grid;grid-template-columns:1fr 1fr;gap:18px}.field{display:flex;flex-direction:column;gap:8px}.field.full{grid-column:1/-1}.field label{text-transform:uppercase;font-size:9px;letter-spacing:.18em;color:#9297a1}.field input,.field textarea,.field select{width:100%;border:0;border-bottom:1px solid #363a42;background:rgba(255,255,255,.025);color:white;padding:15px 12px;outline:none;border-radius:0}.field input:focus,.field textarea:focus{border-color:var(--blue)}.field textarea{min-height:120px;resize:vertical}.form-status{grid-column:1/-1;font-size:12px;color:var(--cyan);min-height:18px}.contact-form .button{justify-self:start}.site-footer{border-top:1px solid var(--line);background:#030405;padding:28px 24px;color:#737780;font-size:10px;text-transform:uppercase;letter-spacing:.14em}.footer-inner{max-width:var(--max);margin:auto;display:flex;justify-content:space-between;gap:20px}.audio-dock{position:fixed;left:50%;bottom:20px;transform:translate(-50%,140%);z-index:70;width:min(640px,calc(100% - 30px));background:rgba(10,12,16,.96);border:1px solid rgba(37,140,255,.55);box-shadow:0 18px 60px #000;padding:13px 17px;display:grid;grid-template-columns:42px 1fr auto;gap:13px;align-items:center;transition:.4s}.audio-dock.open{transform:translate(-50%,0)}.dock-toggle{width:38px;height:38px;border-radius:50%;border:1px solid var(--blue);background:transparent;color:white;cursor:pointer}.dock-title strong{display:block;text-transform:uppercase;font-size:11px;letter-spacing:.1em}.dock-title span{font-size:10px;color:var(--muted)}.dock-close{border:0;background:none;color:#999;cursor:pointer;font-size:18px}
@media(max-width:1000px){.nav-links{display:none}.menu-toggle{display:block}.nav-links.open{display:flex;position:absolute;top:var(--header);left:0;right:0;background:#08090c;flex-direction:column;align-items:stretch;padding:20px 25px;border-bottom:1px solid var(--line)}.nav-links.open a{padding:12px}.header-cta{display:none}.hero-inner{grid-template-columns:1fr}.hero-copy{padding-top:30px;position:relative;z-index:5}.hero-portrait{height:52vh;margin-top:-40px;opacity:.68;justify-content:flex-end}.hero-portrait img{max-width:70%}.side-character{width:31vw}.voice-grid,.quote-grid{grid-template-columns:1fr 1fr}.about-grid,.contact-grid{grid-template-columns:1fr;gap:60px}.about-image{max-width:500px}.credit-row{grid-template-columns:50px 1fr 1fr 70px}}
@media(max-width:650px){:root{--header:68px}.header-inner{padding:0 16px}.brand-wave{width:38px}.hero{padding:calc(var(--header) + 55px) 17px 50px;min-height:920px;align-items:flex-start}.hero h1{font-size:clamp(66px,21vw,100px)}.hero-sub{font-size:13px;line-height:1.6}.hero-portrait{height:440px;margin-top:10px;justify-content:center}.hero-portrait img{max-width:110%}.side-character{width:56vw;top:auto!important;bottom:0}.side-character.left{--char-shift:-78%}.side-character.right{--char-shift:78%}.section{padding:78px 18px}.voice-grid,.quote-grid{grid-template-columns:1fr}.voice-card{min-height:210px}.about-grid{gap:45px}.stats{grid-template-columns:1fr 1fr}.credit-row{grid-template-columns:35px 1fr 55px}.credit-row p{display:none}.contact-form{grid-template-columns:1fr}.field{grid-column:1/-1}.footer-inner{flex-direction:column}.audio-dock{bottom:10px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.side-character{transform:none!important}}
.side-character{border:0;background:transparent;padding:0;color:#fff}.starter-character.left img{mix-blend-mode:screen}.hero-portrait img{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 7%,#000 84%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 7%,#000 84%,transparent 100%)}
.character-art{position:relative;display:block;transform:translateY(calc(var(--talk,0) * -8px)) rotate(calc(var(--talk,0) * var(--talk-tilt,1deg)));filter:drop-shadow(0 0 calc(var(--talk,0) * 34px) var(--char-accent,var(--blue)));transition:transform .08s linear,filter .08s linear}.side-character[data-motion="gentle"]{--talk-tilt:.35deg}.side-character[data-motion="expressive"]{--talk-tilt:1.1deg}.side-character[data-motion="powerful"]{--talk-tilt:2.1deg}.side-character.is-playing .character-art{animation:character-breathe 2.1s ease-in-out infinite}.talk-mouth{position:absolute;z-index:5;left:var(--mouth-x,50%);top:var(--mouth-y,30%);width:var(--mouth-size,10%);aspect-ratio:1.7;transform:translate(-50%,-50%) scaleY(calc(.14 + var(--talk,0) * 1.15));transform-origin:center;background:radial-gradient(ellipse at 50% 18%,#2a080b 0 46%,#080506 50% 100%);border:clamp(1px,.12vw,2px) solid rgba(255,230,220,.65);border-radius:45% 45% 55% 55%;opacity:0;transition:opacity .15s,transform .055s linear;box-shadow:inset 0 -4px 0 rgba(184,44,65,.55),0 0 calc(var(--talk,0) * 12px) var(--char-accent,var(--blue));pointer-events:none}.talk-mouth:before{content:"";position:absolute;left:11%;right:11%;top:9%;height:23%;background:#eee7df;border-radius:50% 50% 25% 25%;opacity:.88}.side-character.is-playing .talk-mouth{opacity:1}.side-character.mouth-disabled .talk-mouth{display:none}.speaking-rings{position:absolute;z-index:-1;inset:18%;border:1px solid var(--char-accent,var(--blue));border-radius:50%;opacity:0;transform:scale(calc(.8 + var(--talk,0) * .5));box-shadow:0 0 45px var(--char-accent,var(--blue));pointer-events:none}.side-character.is-playing .speaking-rings{opacity:calc(.08 + var(--talk,0) * .35)}@keyframes character-breathe{0%,100%{translate:0 0}50%{translate:0 -4px}}
