PageSourceSearch

https://fenul.com/_next/static/chunks/0itgfx9qepyqg.js

js fenul.com collected 2026-09-25 14:52:05 UTC 2,232,934 bytes, 22,330 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,947199,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645);function s({r:e,g:a,b:i}){return`#${[e,a,i].map(e=>Math.round(e).toString(16).padStart(2,"0")).join("")}`}function r(e){let a=e/255;return a<=.03928?a/12.92:((a+.055)/1.055)**2.4}function n(e){return .2126*r(e.r)+.7152*r(e.g)+.0722*r(e.b)}function o(e,a){return(Math.max(n(e),n(a))+.05)/(Math.min(n(e),n(a))+.05)}let l="construction-theme",c={"--site-bg":"#0d1117","--site-fg":"#d4d4d4","--site-soft":"#1a1f2e","--site-border":"#2d3148","--site-muted":"#161b22"},d=["--site-accent-bg","--site-accent-text","--site-on-accent"],h=new WeakMap;function m(e){let a=document.querySelectorAll(".shell-luxury, .shell-editorial, .shell-marketplace, .shell-engineering, .shell-local"),i=window.matchMedia("(prefers-color-scheme: dark)").matches,t="dark"===e||"auto"===e&&i;a.forEach(a=>{let i=function(e){let a=h.get(e);if(a)return a;let i=Object.fromEntries(d.map(a=>[a,e.style.getPropertyValue(a).trim()]));return h.set(e,i),i}(a);if(a.removeAttribute("data-con-theme"),t){a.setAttribute("data-con-theme","dark"),Object.entries(c).forEach(([e,i])=>a.style.setProperty(e,i));let e=function(e){var a;let i,t,r=function(e){let a=e.trim().replace(/^#/,"");if(!/^[0-9a-f]{3}([0-9a-f]{3})?$/i.test(a))return null;let i=3===a.length?a.split("").map(e=>`${e}${e}`).join(""):a;return{r:parseInt(i.slice(0,2),16),g:parseInt(i.slice(2,4),16),b:parseInt(i.slice(4,6),16)}}(e);if(!r)return{background:e,foreground:"#ffffff"};let n=(i=o({r:0,g:0,b:0},r),t=o({r:255,g:255,b:255},r),i>=t?"#000000":"#ffffff"),l="#000000"===n?{r:0,g:0,b:0}:{r:255,g:255,b:255};if(o(l,r)>=4.5)return{background:e,foreground:n};let c="#000000"===n?{r:255,g:255,b:255}:{r:0,g:0,b:0};for(let e=.04;e<=1;e+=.04){let i=(a=e,{r:r.r+(c.r-r.r)*a,g:r.g+(c.g-r.g)*a,b:r.b+(c.b-r.b)*a});if(o(l,i)>=4.5)return{background:s(i),foreground:n}}return{background:s(c),foreground:n}}(getComputedStyle(a).getPropertyValue("--site-accent").trim());a.style.setProperty("--site-accent-bg",e.background),a.style.setProperty("--site-accent-text","#ffffff"),a.style.setProperty("--site-on-accent",e.foreground)}else"light"===e&&a.setAttribute("data-con-theme","light"),Object.keys(c).forEach(e=>a.style.removeProperty(e)),d.forEach(e=>{i[e]?a.style.setProperty(e,i[e]):a.style.removeProperty(e)})})}function p(){let[e,i]=(0,t.useState)("auto");(0,t.useEffect)(()=>{let e=localStorage.getItem(l),a="light"===e||"dark"===e?e:"auto";i(a),m(a);let t=window.matchMedia("(prefers-color-scheme: dark)"),s=()=>{"auto"===(localStorage.getItem(l)??"auto")&&m("auto")};return t.addEventListener("change",s),()=>t.removeEventListener("change",s)},[]);let s=(0,t.useCallback)(e=>{i(e),"auto"===e?localStorage.removeItem(l):localStorage.setItem(l,e),m(e)},[]),r=[{value:"auto",label:"Auto (system)",icon:(0,a.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":!0,children:[(0,a.jsx)("circle",{cx:"7",cy:"7",r:"5.5"}),(0,a.jsx)("line",{x1:"7",y1:"1.5",x2:"7",y2:"12.5"}),(0,a.jsx)("path",{d:"M1.5 7h5.5"}),(0,a.jsx)("path",{d:"M4 3.7 7 7l-3 3.3"})]})},{value:"light",label:"Light",icon:(0,a.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":!0,children:[(0,a.jsx)("circle",{cx:"7",cy:"7",r:"2.5"}),(0,a.jsx)("line",{x1:"7",y1:"1",x2:"7",y2:"2.2"}),(0,a.jsx)("line",{x1:"7",y1:"11.8",x2:"7",y2:"13"}),(0,a.jsx)("line",{x1:"1",y1:"7",x2:"2.2",y2:"7"}),(0,a.jsx)("line",{x1:"11.8",y1:"7",x2:"13",y2:"7"}),(0,a.jsx)("line",{x1:"2.75",y1:"2.75",x2:"3.6",y2:"3.6"}),(0,a.jsx)("line",{x1:"10.4",y1:"10.4",x2:"11.25",y2:"11.25"}),(0,a.jsx)("line",{x1:"2.75",y1:"11.25",x2:"3.6",y2:"10.4"}),(0,a.jsx)("line",{x1:"10.4",y1:"3.6",x2:"11.25",y2:"2.75"})]})},{value:"dark",label:"Dark",icon:(0,a.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":!0,
1children:(0,a.jsx)("path",{d:"M12.2 8.2A5.5 5.5 0 1 1 5.8 1.8a4.3 4.3 0 0 0 6.4 6.4z"})})}];return(0,a.jsx)("div",{className:"con-theme-toggle",role:"group","aria-label":"Color theme",children:r.map(i=>(0,a.jsx)("button",{type:"button",onClick:()=>s(i.value),title:i.label,"aria-label":`Switch to ${i.label} theme`,"aria-pressed":e===i.value,children:i.icon},i.value))})}let g={horizontal:{ink:"/oceanfront-builders/logo.png",white:"/oceanfront-builders/logo-light.png",width:1200,height:206},stacked:{ink:"/oceanfront-builders/logo-stacked.png",white:"/oceanfront-builders/logo-stacked-light.png",width:900,height:695},mark:{ink:"/oceanfront-builders/logo-mark.png",white:"/oceanfront-builders/logo-mark-light.png",width:512,height:512},headerHeight:34},v={"oceanfrontbuilders.com":g,"oceanfront.builders":g,"palosverdesbuilders.com":{horizontal:{ink:"/palos-verdes-builders/logo.png",white:"/palos-verdes-builders/logo-light.png",width:1200,height:234},stacked:{ink:"/palos-verdes-builders/logo-stacked.png",white:"/palos-verdes-builders/logo-stacked-light.png",width:900,height:459},mark:{ink:"/palos-verdes-builders/logo-mark.png",white:"/palos-verdes-builders/logo-mark-light.png",width:512,height:512}}};function u({asset:e,surface:i,height:t,priority:s,className:r}){let n={width:Math.round(e.width/e.height*t),height:t,style:{height:t,width:"auto"},loading:s?"eager":"lazy",decoding:s?"sync":"async",...s?{fetchPriority:"high"}:{}};return(0,a.jsxs)("span",{className:`brand-logo brand-logo--on-${i}${r?` ${r}`:""}`,"aria-hidden":!0,children:[(0,a.jsx)("img",{className:"brand-logo-ink",src:e.ink,alt:"",...n}),(0,a.jsx)("img",{className:"brand-logo-white",src:e.white,alt:"",...n})]})}var b=e.i(468158);function f(e,a){let i="/"===e?"":e.replace(/\/$/,"");return"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}let x={"oceanfrontbuilders.com":"Licensed General Contractor · CA Lic. #1130785 · Fully Insured · Orange County","oceanfront.builders":"Design-Forward Construction · Greater Los Angeles · Licensed & Insured","lapremierbuilders.com":"LA Contractor Marketplace · Free to Match · Vetted Local Professionals","palosverdesbuilders.com":"Building on the Peninsula · PV Estates · Rolling Hills · RPV · Licensed & Insured","pvpremierbuilders.com":"Local to Palos Verdes · Verified Contractors · Free to Match"},y={luxury:{label:"Start Project",href:"/contact"},editorial:{label:"Plan Consult",href:"/start-your-project"},marketplace:{label:"Start Matching",href:"/#lead"},engineering:{label:"Plan Your Build",href:"/#lead"},local:{label:"Find Builders",href:"/#lead"}},w={"oceanfrontbuilders.com":[{label:"Remodel Cost Estimator",href:"/tools"},{label:"Luxury Finish Cost Planner",href:"/tools"},{label:"Project Timeline Planner",href:"/tools"},{label:"Scope & Budget Alignment",href:"/tools"}],"oceanfront.builders":[{label:"Remodel Cost Estimator",href:"/tools"},{label:"LA ADU Feasibility Analyzer",href:"/tools"},{label:"Project Timeline Planner",href:"/tools"},{label:"Permit Complexity Scorer",href:"/tools"}],"lapremierbuilders.com":[{label:"Contractor Match Engine",href:"/tools"},{label:"Remodel Cost Estimator",href:"/tools"},{label:"Scope & Budget Alignment",href:"/tools"},{label:"ADU Feasibility Check",href:"/tools"}],"palosverdesbuilders.com":[{label:"Remodel Cost Estimator",href:"/tools"},{label:"Project Timeline Planner",href:"/tools"},{label:"ADU & Guest House Feasibility",href:"/tools"},{label:"Scope & Budget Alignment",href:"/tools"}],"pvpremierbuilders.com":[{label:"PV Contractor Match",href:"/tools"},{label:"Remodel Cost Estimator",href:"/tools"},{label:"Project Timeline Planner",href:"/tools"}]},_={};function k(){return(0,a.jsx)("svg",{"aria-hidden":!0,className:"h-3 w-3 opacity-45 transition-transform duration-200 group-hover:rotate-180",fill:"none",viewBox:"0 0 12 12",stroke:"currentColor",strokeWidth:2,children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M2 4l4 4 4-4"})})}e.s(["ConstructionHeader",0,function({siteName:e,domain:s,variant:r,navEntries:n,currentSlug:o,siteBasePath:l,showPortfolioLink:c}){let[d,h]=(0,t.useState)(!1),[m,g]=(0,t.useState)(!1),j=x[s]??"Licensed · Insured · Southern California",N=y[r],S=w[s]??[],A=v[s.toLowerCase()],z=_[s];return(0,t.useEffect)(()=>{let e=()=>g(window.scrollY>48);return e(),window.addEventListener("scroll",e,{passive:!0}),()=>window.removeEventListener("scroll",e)},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(b.SkipToContent,{}),(0,a.jsx)("div",{className:"con-trust-bar hidden md:block",role:"complementary","aria-label":"Site information",children:(0,a.jsxs)("div",{className:"mx-auto flex max-w-7xl items-center justify-between px-4 py-1.5 sm:px-6",children:[(0,a.jsx)("span",{children:j}),(0,a.jsxs)("div",{className:"flex items-center gap-4",children:["engineering"===r||"luxury"===r?(0,a.jsx)(i.default,{href:f(l,"/membership"),className:"opacity-50 transition-opacity hover:opacity-100",children:"Membership"}):null,c?(0,a.jsx)(i.default,{href:"/",className:"opacity-50 transition-opacity hover:opacity-100",children:"← Portfolio"}):null]})]})}),(0,a.jsxs)("header",{className:`con-header sticky top-0 z-50 transition-all duration-300${m?" con-header--scrolled":""}`,children:[(0,a.jsxs)("div",{className:"mx-auto flex h-16 max-w-7xl items-center justify-between gap-4 px-4 sm:px-6",children:[(0,a.jsx)(i.default,{href:f(l,"/"),className:"group flex min-w-0 transition-opacity hover:opacity-75","aria-label":`${e} — home`,children:A?(0,a.jsxs)("span",{className:"flex flex-col leading-none",children:[(0,a.jsx)(u,{asset:A.horizontal,surface:"bg",height:A.headerHeight??26,priority:!0}),z?(0,a.jsx)("span",{className:"mt-1 text-[9px] font-normal tracking-wide text-[color:var(--site-fg)] opacity-50 italic",children:z}):null]}):(0,a.jsxs)("span",{className:"flex flex-col leading-none",children:[(0,a.jsx)("span",{className:"text-[9px] font-semibold uppercase tracking-[0.34em] text-[color:var(--site-accent-text)]",children:s}),(0,a.jsx)("span",{className:"mt-1 truncate font-display text-[1.05rem] font-semibold tracking-tight text-[color:var(--site-fg)]",children:e})]})}),(0,a.jsxs)("nav",{"aria-label":"Main navigation",className:"hidden items-center gap-0.5 md:flex",children:[n.map(e=>(0,a.jsx)(i.default,{href:f(l,e.slug),className:"con-nav-link px-3 py-2 text-sm font-medium text-fg-muted hover:text-[color:var(--site-fg)]","data-active":e.slug===o?"true":void 0,children:e.title},e.slug)),S.length>0?(0,a.jsxs)("div",{className:"con-dropdown-wrap group relative",children:[(0,a.jsxs)("button",{type:"button",className:"con-nav-link flex items-center gap-1.5 px-3 py-2 text-sm font-medium text-fg-muted hover:text-[color:var(--site-fg)]",children:["Tools",(0,a.jsx)(k,{})]}),(0,a.jsx)("div",{className:"con-dropdown absolute left-1/2 top-full mt-2.5 w-68 min-w-[16rem] -translate-x-1/2 roun
1ded-2xl border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-bg)_96%,transparent)] p-2 shadow-[0_24px_64px_-24px_rgba(0,0,0,0.22)] backdrop-blur-2xl","aria-label":"Tools",children:S.map(e=>(0,a.jsxs)(i.default,{href:f(l,e.href),className:"flex items-center gap-3 rounded-xl px-3.5 py-2.5 text-sm text-fg-muted transition hover:bg-[color:var(--site-soft)] hover:text-[color:var(--site-fg)]",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"h-1.5 w-1.5 shrink-0 rounded-full bg-[color:var(--site-accent)] opacity-75"}),e.label]},`${e.href}-${e.label}`))})]}):null,"engineering"!==r&&"luxury"!==r?(0,a.jsx)(i.default,{href:f(l,"/membership"),className:"con-nav-link ml-1 rounded-full border border-[color:var(--site-border)] px-3.5 py-1.5 text-xs font-semibold text-fg-muted transition hover:border-[color:var(--site-accent)] hover:text-[color:var(--site-accent-text)]",children:"Membership"}):null]}),(0,a.jsxs)("div",{className:"flex shrink-0 items-center gap-2.5",children:[(0,a.jsx)(i.default,{href:f(l,N.href),className:"con-cta-pulse hidden rounded-full bg-[color:var(--site-accent)] px-4 py-2 text-sm font-semibold text-[color:var(--site-bg)] transition-all duration-300 ease-out-expo hover:-translate-y-0.5 sm:inline-flex",children:N.label}),(0,a.jsx)(p,{}),(0,a.jsx)("button",{"aria-label":d?"Close menu":"Open menu","aria-expanded":d,"aria-controls":"mobile-nav",className:"flex h-9 w-9 items-center justify-center rounded-xl border border-[color:var(--site-border)] text-fg-muted transition hover:border-[color:var(--site-accent)] hover:text-[color:var(--site-accent-text)] md:hidden",onClick:()=>h(e=>!e),children:(0,a.jsx)("svg",{viewBox:"0 0 20 20",fill:"currentColor",className:"h-4.5 w-4.5","aria-hidden":!0,children:d?(0,a.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"}):(0,a.jsx)("path",{fillRule:"evenodd",d:"M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z",clipRule:"evenodd"})})})]})]}),d?(0,a.jsx)("div",{id:"mobile-nav",className:"border-t border-[color:color-mix(in_srgb,var(--site-border)_40%,transparent)] bg-[color-mix(in_srgb,var(--site-bg)_97%,transparent)] px-4 py-4 backdrop-blur-2xl md:hidden",children:(0,a.jsxs)("nav",{className:"flex flex-col gap-0.5",children:[n.map(e=>(0,a.jsx)(i.default,{href:f(l,e.slug),className:`rounded-xl px-4 py-2.5 text-sm font-medium transition ${e.slug===o?"bg-[color-mix(in_srgb,var(--site-accent)_12%,transparent)] text-[color:var(--site-accent-text)]":"text-fg-muted hover:bg-[color:var(--site-soft)] hover:text-[color:var(--site-fg)]"}`,onClick:()=>h(!1),children:e.title},e.slug)),S.length>0?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"my-2.5 border-t border-[color:color-mix(in_srgb,var(--site-border)_50%,transparent)]"}),(0,a.jsx)("p",{className:"px-4 pb-1 text-[10px] font-semibold uppercase tracking-[0.3em] text-[color:var(--site-accent-text)]",children:"Tools & Calculators"}),S.map(e=>(0,a.jsxs)(i.default,{href:f(l,e.href),className:"flex items-center gap-3 rounded-xl px-4 py-2.5 text-sm text-fg-muted transition hover:bg-[color:var(--site-soft)] hover:text-[color:var(--site-fg)]",onClick:()=>h(!1),children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"h-1.5 w-1.5 shrink-0 rounded-full bg-[color:var(--site-accent)] opacity-60"}),e.label]},`${e.href}-${e.label}`))]}):null,(0,a.jsxs)("div",{className:"mt-3.5 space-y-2 border-t border-[color:color-mix(in_srgb,var(--site-border)_50%,transparent)] pt-3.5",children:[(0,a.jsx)(i.default,{href:f(l,"/membership"),className:"flex w-full items-center justify-center rounded-full border border-[color:var(--site-accent)] px-5 py-2.5 text-sm font-semibold text-[color:var(--site-accent-text)] transition hover:bg-[color-mix(in_srgb,var(--site-accent)_8%,transparent)]",onClick:()=>h(!1),children:"Membership"}),(0,a.jsx)(i.default,{href:f(l,N.href),className:"flex w-full items-center justify-center rounded-full bg-[color:var(--site-accent)] px-5 py-2.5 text-sm font-semibold text-[color:var(--site-bg)] shadow-[0_12px_32px_-14px_color-mix(in_srgb,var(--site-accent)_70%,transparent)]",onClick:()=>h(!1),children:N.label})]}),(0,a.jsxs)("div",{className:"con-mobile-theme-row mt-3.5 border-t border-[color:color-mix(in_srgb,var(--site-border)_50%,transparent)] pt-3.5",children:[(0,a.jsx)("span",{className:"con-mobile-theme-label",children:"Theme"}),(0,a.jsx)(p,{})]}),c?(0,a.jsx)(i.default,{href:"/",className:"mt-2 px-4 py-2 text-xs text-fg-soft transition hover:text-fg-muted",onClick:()=>h(!1),children:"← Portfolio index"}):null]})}):null]})]})}],947199)},469879,e=>{"use strict";var a=e.i(843476),i=e.i(271645);let t="fx-geo-country";function s(e,a,i){let t=e.querySelectorAll('a[href*="/news/"]');if(0===t.length)return;let s=new Map;for(let e of t){let a=e.parentElement;if(!a)continue;let i=s.get(a);i?i.push(e):s.set(a,[e])}for(let[e,t]of s){let s=window.getComputedStyle(e).display;
1if(!s.includes("grid")&&!s.includes("flex")||e.childElementCount!==t.length)continue;let r=[],n=[];for(let e of t){let t=function(e){let a=(e.getAttribute("href")??"").match(/\/news\/([^/?#]+)/);return a?a[1]:null}(e),s=t?a.get(t):void 0;(!s||function(e,a){if((e.primary_countries??[]).includes(a))return!0;if(void 0!==e.global)return e.global;let i=e.global_appeal_score;return null==i||i>=50}(s,i)?r:n).push(e)}if(0===r.length||0===n.length)continue;let o=0;for(let e of r)e.style.order=String(o++);for(let e of n)e.style.order=String(o++)}}e.s(["HomeFeedPersonalizer",0,function({hints:e,children:r}){let n=(0,i.useRef)(null),o=(0,i.useRef)(e);return o.current=e,(0,i.useEffect)(()=>{let e=n.current,a=o.current;if(!e||0===a.length)return;let i=new Map(a.map(e=>[e.slug,e])),r=function(){try{let e=document.cookie.match(/(?:^|;\s*)geo-country=([^;]*)/),a=e?decodeURIComponent(e[1]):"";return/^[A-Z]{2}$/.test(a)?a:null}catch{return null}}()??function(){try{let e=window.localStorage.getItem(t);if(!e)return null;let a=JSON.parse(e);if("string"!=typeof a.c||"number"!=typeof a.t||Date.now()-a.t>864e5)return null;return/^[A-Z]{2}$/.test(a.c)?a.c:null}catch{return null}}();if(r)return void s(e,i,r);let l=new AbortController;return fetch("/api/geo",{signal:l.signal,cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{let a=e&&"string"==typeof e.country?e.country:null;if(a&&/^[A-Z]{2}$/.test(a)){try{document.cookie=`geo-country=${encodeURIComponent(a)}; path=/; max-age=86400; samesite=lax`}catch{}try{window.localStorage.setItem(t,JSON.stringify({c:a,t:Date.now()}))}catch{}n.current&&s(n.current,i,a)}}).catch(()=>{}),()=>l.abort()},[]),(0,a.jsx)("div",{ref:n,style:{display:"contents"},children:r})}],469879)},558263,e=>{"use strict";e.s(["outletFaviconUrl",0,function(e,a){if(!e)return null;let i=e.trim().replace(/^www\./i,"").toLowerCase();return i?`${a?"https://media.koohestun.com/outlet-logos":"https://media.factlen.com/outlet-logos"}/${encodeURIComponent(i)}.png`:null}])},391613,e=>{"use strict";var a=e.i(843476),i=e.i(16508),t=e.i(558263);e.s(["SourceDistribution",0,function({perspectives:e,sources:s,labels:r}){let n=s.length;if(0===n||0===e.length)return null;let o=[...e].sort((e,a)=>(a.weight??0)-(e.weight??0)).slice(0,5),l=(0,i.perspectivePalette)(o.length),c=o.reduce((e,a)=>e+(a.weight??0),0)||1,d=e=>l[e]??l[l.length-1];return(0,a.jsx)("figure",{className:"aspect-[16/9] w-full overflow-hidden rounded-md border border-[color:var(--site-border)] bg-[color:var(--site-card,var(--site-bg))]","aria-label":r?.sourceCoverageBreakdownAria??"Source coverage breakdown",children:(0,a.jsxs)("div",{className:"grid h-full grid-rows-[auto_1fr_auto] gap-3 p-4 sm:p-6",children:[(0,a.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-[10px] font-bold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:r?.sourceCoverageLabel??"Source coverage"}),(0,a.jsxs)("p",{className:"mt-0.5 font-display text-2xl font-extrabold leading-none sm:text-3xl",children:[n," ",r?.outletsWord??"outlets"]})]}),(0,a.jsxs)("p",{className:"text-end text-[10px] font-bold uppercase tracking-wide text-fg-soft",children:[o.length," ",r?.viewpointsSurfacedSuffix??`viewpoint${1===o.length?"":"s"} surfaced`]})]}),(0,a.jsxs)("div",{className:"flex flex-col justify-center gap-3",children:[(0,a.jsx)("div",{className:"fx-persp-bar flex h-3 overflow-hidden rounded-full bg-[color:var(--site-border)]",children:o.map((e,t)=>{let s=(e.weight??0)/c*100;return(0,a.jsx)("span",{className:"h-full",style:{width:`${s}%`,backgroundColor:(0,i.perspectiveBarFill)(d(t))},title:`${e.label}: ${Math.round(s)}%`},`${e.label}-${t}`)})}),(0,a.jsx)("div",{className:"flex flex-wrap gap-x-3 gap-y-1 text-[10px] font-bold uppercase tracking-wide sm:text-[11px]",children:o.map((e,t)=>{let s=Math.round((e.weight??0)/c*100),r=d(t);return(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-2 w-2 rounded-full ring-1 ring-[color:var(--site-border)]",style:{backgroundColor:(0,i.perspectiveBarFill)(r)}}),(0,a.jsxs)("span",{style:{color:(0,i.perspectiveTextColor)(r)},children:[e.label," ",s,"%"]})]},`legend-${e.label}-${t}`)})})]}),(0,a.jsx)("div",{className:"flex flex-wrap items-center gap-1.5 border-t border-[color:var(--site-border)] pt-3",children:s.map((e,i)=>{let s=(0,t.outletFaviconUrl)(e.domain,!!r),n=e.url||(e.domain?`https://${e.domain}`:"#");return(0,a.jsx)("a",{href:n,target:"_blank",rel:"noopener noreferrer",title:`${e.outlet} — ${e.headline||e.domain||""}`,className:"inline-flex h-7 w-7 items-center justify-center overflow-hidden rounded-full bg-[color:color-mix(in_srgb,var(--site-fg)_8%,var(--site-bg))] ring-1 ring-[color:var(--site-border)] transition hover:ring-[color:var(--site-accent)] hover:ring-2",children:s?(0,a.jsx)("img",{src:s,alt:"",loading:"lazy",className:"h-full w-full object-cover"}):(0,a.jsx)("span",{className:"text-[10px] font-bold uppercase",children:e.outlet.slice(0,1)})},`${e.outlet}-${i}`)})})]})})}])},819532,e=>{"use strict";var a=e.i(843476),i=e.i(16508),t=e.i(558263);
1function s({source:e,idx:i,labels:r}){let n=(0,t.outletFaviconUrl)(e.domain,!!r),o=e.url||(e.domain?`https://${e.domain}`:"#"),l="editorial"===e.kind,c="reference"===e.kind,d=["group inline-flex items-center gap-1.5 rounded-full py-0.5 ps-0.5 pe-2 transition hover:shadow-sm scroll-mt-24 bg-[color:var(--site-bg)]",l?"border-2 border-[#d4af37] hover:border-[#f0c75a]":"border border-[color:var(--site-border)] hover:border-[color:var(--site-accent)]/60"].join(" ");return(0,a.jsxs)("a",{href:o,target:"_blank",rel:"noopener noreferrer",id:i?`source-${i}`:void 0,title:`${e.outlet}${e.headline?" — "+e.headline:""}${l?r?.editorialChipSuffix??" (Factlen Editorial)":c?r?.referenceChipSuffix??" (reference)":""}`,className:d,children:[(0,a.jsx)("span",{className:"inline-flex h-5 w-5 items-center justify-center overflow-hidden rounded-full bg-[color:color-mix(in_srgb,var(--site-fg)_8%,var(--site-card,var(--site-bg)))]",children:l?(0,a.jsx)("span",{"aria-hidden":!0,className:"text-[10px] font-extrabold text-[#d4af37]",children:"F"}):n?(0,a.jsx)("img",{src:n,alt:"",loading:"lazy",className:"h-full w-full object-cover"}):(0,a.jsx)("span",{className:"text-[8px] font-bold uppercase",children:e.outlet.slice(0,1)})}),(0,a.jsxs)("span",{className:"max-w-[8.5rem] truncate text-[11px] font-semibold text-fg group-hover:text-[color:var(--site-accent-text)]",children:[i?(0,a.jsxs)("span",{className:"me-1 text-fg-soft",children:["[",i,"]"]}):null,e.outlet]}),c&&(0,a.jsx)("span",{"aria-hidden":!0,className:"ms-0.5 rounded-sm bg-fg-soft/15 px-1 text-[8px] font-extrabold uppercase tracking-wide text-fg-soft",title:r?.referenceBadgeTooltip??"Reference (encyclopedic / academic / gov)",children:r?.referenceBadge??"Ref"})]})}e.s(["SourceSidebar",0,function({perspectives:e,sources:t,labels:r}){if(0===t.length||0===e.length)return null;let n=[...e].sort((e,a)=>(a.weight??0)-(e.weight??0)).slice(0,5),o=(0,i.perspectivePalette)(n.length),l=new Map;t.forEach((e,a)=>l.set(e.outlet,a+1));let c=new Set;for(let e of n)for(let a of e.outlets??[])c.add(a);let d=t.filter(e=>!c.has(e.outlet));return(0,a.jsx)("aside",{"aria-labelledby":"sources-rail-heading",className:"lg:sticky lg:top-4",children:(0,a.jsxs)("div",{className:"rounded-lg border border-[color:var(--site-border)] bg-[color:var(--site-card,var(--site-bg))] p-4",children:[(0,a.jsxs)("div",{className:"mb-3 flex items-baseline justify-between",children:[(0,a.jsx)("h3",{id:"sources-rail-heading",className:"text-[11px] font-bold uppercase tracking-[0.18em] text-fg-soft",children:r?.coverageHeading??"Coverage"}),(0,a.jsxs)("span",{className:"text-[11px] font-bold text-fg-soft",children:[t.length," ",r?.outletsWord??"outlets"]})]}),(0,a.jsxs)("ul",{className:"space-y-4",children:[n.map((e,n)=>{let c=o[n]??o[o.length-1],d=(e.outlets??[]).map(e=>t.find(a=>a.outlet===e)).filter(e=>!!e);return 0===d.length?null:(0,a.jsxs)("li",{children:[(0,a.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-2 w-2 rounded-full ring-1 ring-[color:var(--site-border)]",style:{backgroundColor:(0,i.perspectiveBarFill)(c)}}),(0,a.jsxs)("span",{className:"text-[10px] font-extrabold uppercase tracking-wide",style:{color:(0,i.perspectiveTextColor)(c)},title:e.description,children:[e.label," · ",e.weight??0,"%"]})]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:d.map(e=>(0,a.jsx)(s,{source:e,idx:l.get(e.outlet),labels:r},`${e.outlet}-${e.url}`))})]},`${e.label}-${n}`)}),d.length>0&&(0,a.jsxs)("li",{children:[(0,a.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-2 w-2 rounded-full bg-fg-soft"}),(0,a.jsx)("span",{className:"text-[10px] font-extrabold uppercase tracking-wide text-fg-soft",children:r?.otherBucket??"Other"})]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:d.map(e=>(0,a.jsx)(s,{source:e,idx:l.get(e.outlet),labels:r},`${e.outlet}-${e.url}`))})]})]}),(0,a.jsx)("p",{className:"mt-4 border-t border-[color:var(--site-border)] pt-3 text-[10px] leading-relaxed text-fg-soft",children:r?.sourceChipHint??"Click a logo to read the story on that outlet. Inline [N] citations in the article link here."})]})})}])},851367,e=>{"use strict";var a=e.i(843476),i=e.i(271645);function t(){return(0,a.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"
1currentColor","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.746l7.73-8.835L1.254 2.25H8.08l4.253 5.622L18.244 2.25zm-1.161 17.52h1.833L7.084 4.126H5.117L17.083 19.77z"})})}function s(){return(0,a.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"currentColor","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M24 12.073C24 5.405 18.627 0 12 0S0 5.405 0 12.073C0 18.1 4.388 23.094 10.125 24v-8.437H7.078v-3.49h3.047V9.41c0-3.025 1.792-4.697 4.533-4.697 1.312 0 2.686.236 2.686.236v2.97h-1.513c-1.491 0-1.956.93-1.956 1.884v2.25h3.328l-.532 3.49h-2.796V24C19.612 23.094 24 18.1 24 12.073z"})})}function r(){return(0,a.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"currentColor","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"})})}function n(){return(0,a.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"currentColor","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 0 1-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 0 1-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 0 1 2.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0 0 12.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 0 0 5.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 0 0-3.48-8.413z"})})}function o(){return(0,a.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"currentColor","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"})})}function l(){return(0,a.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"currentColor","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 0 1-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 0 1 .042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 0 1 4.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 0 1 .14-.197.35.35 0 0 1 .238-.042l2.906.617a1.214 1.214 0 0 1 1.108-.701zM9.25 12C8.561 12 8 12.562 8 13.25c0 .687.561 1.248 1.25 1.248.687 0 1.248-.561 1.248-1.249 0-.688-.561-1.249-1.249-1.249zm5.5 0c-.687 0-1.248.561-1.248 1.25 0 .687.561 1.248 1.249 1.248.688 0 1.249-.561 1.249-1.249 0-.687-.562-1.249-1.25-1.249zm-5.466 3.99a.327.327 0 0 0-.231.094.33.33 0 0 0 0 .463c.842.842 2.484.913 2.961.913.477 0 2.105-.056 2.961-.913a.361.361 0 0 0 .029-.463.33.33 0 0 0-.464 0c-.547.533-1.684.73-2.512.73-.828 0-1.979-.196-2.512-.73a.326.326 0 0 0-.232-.095z"})})}function c(){return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0,
1children:[(0,a.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"2"}),(0,a.jsx)("path",{d:"m2 7 10 7 10-7"})]})}function d(){return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",className:"h-3.5 w-3.5",fill:"none",stroke:"currentColor",strokeWidth:"2.5","aria-hidden":!0,children:[(0,a.jsx)("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),(0,a.jsx)("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"})]})}function h(){return(0,a.jsx)("svg",{viewBox:"0 0 24 24",className:"h-3.5 w-3.5",fill:"none",stroke:"currentColor",strokeWidth:"2.5","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M20 6 9 17l-5-5"})})}function m(){return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0,children:[(0,a.jsx)("path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"}),(0,a.jsx)("polyline",{points:"16 6 12 2 8 6"}),(0,a.jsx)("line",{x1:"12",y1:"2",x2:"12",y2:"15"})]})}e.s(["ShareBar",0,function({title:e,slug:p,summary:g,variant:v="full",canonicalBase:u,labels:b,children:f}){let[x,y]=(0,i.useState)(!1),[w,_]=(0,i.useState)(!1);(0,i.useEffect)(()=>{_("u">typeof navigator&&!!navigator.share)},[]);let k=`${u??"https://factlen.com"}/news/${p}`,j=[{label:b?.shareOnX??"Share on X",href:`https://x.com/intent/tweet?text=${encodeURIComponent(e)}&url=${encodeURIComponent(k)}`,icon:(0,a.jsx)(t,{}),hoverClass:"hover:bg-black hover:text-white hover:border-black"},{label:b?.shareOnFacebook??"Share on Facebook",href:`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(k)}`,icon:(0,a.jsx)(s,{}),hoverClass:"hover:bg-[#1877F2] hover:text-white hover:border-[#1877F2]"},{label:b?.shareOnLinkedIn??"Share on LinkedIn",href:`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(k)}`,icon:(0,a.jsx)(r,{}),hoverClass:"hover:bg-[#0A66C2] hover:text-white hover:border-[#0A66C2]"},{label:b?.shareOnWhatsApp??"Share on WhatsApp",href:`https://wa.me/?text=${encodeURIComponent(`${e} — ${k}`)}`,icon:(0,a.jsx)(n,{}),hoverClass:"hover:bg-[#25D366] hover:text-white hover:border-[#25D366]"},{label:b?.shareOnTelegram??"Share on Telegram",href:`https://t.me/share/url?url=${encodeURIComponent(k)}&text=${encodeURIComponent(e)}`,icon:(0,a.jsx)(o,{}),hoverClass:"hover:bg-[#229ED9] hover:text-white hover:border-[#229ED9]"},{label:b?.shareOnReddit??"Share on Reddit",href:`https://www.reddit.com/submit?url=${encodeURIComponent(k)}&title=${encodeURIComponent(e)}`,icon:(0,a.jsx)(l,{}),hoverClass:"hover:bg-[#FF4500] hover:text-white hover:border-[#FF4500]"},{label:b?.shareViaEmail??"Share via Email",href:`mailto:?subject=${encodeURIComponent(e)}&body=${encodeURIComponent(`${g?g+"\n\n":""}${b?.readFullStoryPrefix??"Read the full story:"} ${k}`)}`,icon:(0,a.jsx)(c,{}),hoverClass:"hover:bg-[color:var(--site-accent)] hover:text-white hover:border-[color:var(--site-accent)]"}],N=async()=>{try{await navigator.clipboard.writeText(k)}catch{let e=document.createElement("textarea");e.value=k,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}y(!0),setTimeout(()=>y(!1),2200)},S=async()=>{try{await navigator.share({title:e,text:g??e,url:k})}catch{}};return"compact"===v?(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[j.map(e=>(0,a.jsxs)("a",{href:e.href,target:"_blank",rel:"noopener noreferrer",title:e.label,className:`flex h-8 w-8 items-center justify-center rounded-full border border-[color:var(--site-border)] text-fg-soft transition ${e.hoverClass}`,children:[e.icon,(0,a.jsx)("span",{className:"sr-only",children:e.label})]},e.label)),(0,a.jsxs)("button",{onClick:N,className:"flex h-8 items-center gap-1 rounded-full border border-[color:var(--site-border)] px-3 text-[11px] font-bold text-fg-soft transition hover:border-[color:var(--site-accent)] hover:text-[color:var(--site-accent-text)]",children:[x?(0,a.jsx)(h,{}):(0,a.jsx)(d,{}),(0,a.jsx)("span",{children:x?b?.linkCopied??"Copied!":b?.copyLink??"Copy link"})]}),w&&(0,a.jsxs)("button",{onClick:S,title:b?.shareViaEllipsis??"Share via…",className:"flex h-8 w-8 items-center justify-center rounded-full border border-[color:var(--site-border)] text-fg-soft transition hover:bg-[color:var(--site-accent)] hover:text-white hover:border-[color:var(--site-accent)]",children:[(0,a.jsx)(m,{}),(0,a.jsx)("span",{className:"sr-only",children:b?.shareViaEllipsis??"Share via…"})]}),f]}):(0,a.jsxs)("div",{className:"rounded-lg border border-[color:var(--site-border)] bg-[color:var(--site-muted)] p-4",children:[(0,a.jsx)("p",{className:"mb-3 text-[10px] font-bold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:b?.shareThisStory??"Share this story"}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[j.map(e=>(0,a.jsxs)("a",{href:e.href,target:"_blank",rel:"noopener noreferrer",title:e.label,className:`flex h-9 w-9 items-center justify-center rounded-full border border-[color:var(--site-border)] bg-[color:var(--site-bg)] text-fg-soft transition ${e.hoverClass}`,children:[e.icon,(0,a.jsx)("span",{className:"sr-only",children:e.label})]},e.label)),(0,a.jsxs)("button",{onClick:N,className:"flex h-9 items-center gap-1.5 rounded-full border border-[color:var(--site-border)] bg-[color:var(--site-bg)] px-3.5 text-[11px] font-bold text-fg-soft transition hover:border-[color:var(--site-accent)] hover:text-[color:var(--site-accent-text)]",children:[x?(0,a.jsx)(h,{}):(0,a.jsx)(d,{}),(0,a.jsx)("span",{children:x?b?.linkCopied??"Copied!":b?.copyLink??"Copy link"})]}),w&&(0,a.jsxs)("button",{onClick:S,className:"flex h-9 items-center gap-1.5 rounded-full border border-[color:var(--site-accent)] bg-[
1color:var(--site-accent)] hover:bg-[color:var(--site-accent-hover)] active:bg-[color:var(--site-accent-active)] px-3.5 text-[11px] font-bold text-white transition",children:[(0,a.jsx)(m,{}),(0,a.jsx)("span",{children:b?.shareViaEllipsis??"Share via…"})]}),f]})]})}])},464223,e=>{"use strict";var a=e.i(843476),i=e.i(271645);function t(){return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0,children:[(0,a.jsx)("path",{d:"M3 18v-6a9 9 0 0 1 18 0v6"}),(0,a.jsx)("rect",{x:"16",y:"14",width:"5",height:"7",rx:"2"}),(0,a.jsx)("rect",{x:"3",y:"14",width:"5",height:"7",rx:"2"})]})}function s(){return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"currentColor","aria-hidden":!0,children:[(0,a.jsx)("rect",{x:"6",y:"5",width:"4",height:"14",rx:"1"}),(0,a.jsx)("rect",{x:"14",y:"5",width:"4",height:"14",rx:"1"})]})}function r(){return(0,a.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"currentColor","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M8 5v14l11-7z"})})}function n(){return(0,a.jsx)("svg",{viewBox:"0 0 24 24",className:"h-3.5 w-3.5",fill:"currentColor","aria-hidden":!0,children:(0,a.jsx)("rect",{x:"6",y:"6",width:"12",height:"12",rx:"1.5"})})}let o=[e=>/online \(natural\)/i.test(e.name),e=>/^google\b.*\(natural\)/i.test(e.name),e=>/enhanced|premium/i.test(e.name),e=>/^google\b/i.test(e.name),e=>["samantha","zira","david"].includes(e.name.toLowerCase())],l=new Set(["albert","bad news","bahh","bells","boing","bubbles","cellos","wobble","good news","jester","organ","superstar","trinoids","whisper","zarvox","ralph","junior","kathy","fred"]);e.s(["ArticleListenButton",0,function({title:e,summary:c,bodyText:d,lang:h,variant:m="compact",labels:p}){let[g,v]=(0,i.useState)("idle"),[u,b]=(0,i.useState)("checking"),f=(0,i.useRef)([]),x=(0,i.useRef)(0),y=(0,i.useRef)(void 0);if((0,i.useEffect)(()=>{if(!("speechSynthesis"in window))return void b("unavailable");let e=!1,a=h.split("-")[0].toLowerCase();return(async()=>{let i,t=await ((i=window.speechSynthesis.getVoices()).length>0?Promise.resolve(i):new Promise(e=>{let a=()=>{window.speechSynthesis.removeEventListener("voiceschanged",a),e(window.speechSynthesis.getVoices())};window.speechSynthesis.addEventListener("voiceschanged",a),setTimeout(()=>e(window.speechSynthesis.getVoices()),1e3)}));if(e)return;let s=t.some(e=>e.lang.toLowerCase().startsWith(a));s&&(y.current=function(e,a){let i=a.split("-")[0].toLowerCase(),t=e.filter(e=>e.lang.toLowerCase().startsWith(i)&&!l.has(e.name.toLowerCase()));if(0!==t.length){for(let e of o){let a=t.find(e);if(a)return a}return t.find(e=>e.lang.toLowerCase()===a.toLowerCase())??t[0]}}(t,h)),b(s?"available":"unavailable")})(),()=>{e=!0,window.speechSynthesis.cancel()}},[h]),"available"!==u)return null;let w="idle"!==g,_="idle"===g?p?.listenToArticle??"Listen":"paused"===g?p?.resumeListening??"Resume":p?.pauseListening??"Pause",k="full"===m?"h-9":"h-8",j="full"===m?"bg-[color:var(--site-bg)]":"";return(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsxs)("button",{type:"button",onClick:w?function(){"speaking"===g?(window.speechSynthesis.pause(),v("paused")):"paused"===g&&(window.speechSynthesis.resume(),v("speaking"))}:function(){f.current=[e,c,d].filter(Boolean).join(". ").split(/(?<=[.!?۔])\s+/).map(e=>e.trim()).filter(Boolean),x.current=0,window.speechSynthesis.cancel(),v("speaking"),function e(){let a=f.current,i=x.current;if(i>=a.length){v("idle"),x.current=0;return}let t=new SpeechSynthesisUtterance(a[i]);t.lang=h,y.current&&(t.voice=y.current),t.onend=()=>{x.current+=1,e()},t.onerror=()=>{v("idle"),x.current=0},window.speechSynthesis.speak(t)}()},title:_,className:`flex ${k} shrink-0 items-center gap-1.5 whitespace-nowrap rounded-full border border-[color:var(--site-border)] ${j} px-3.5 text-[11px] font-bold text-fg-soft transition hover:border-[color:var(--site-accent)] hover:text-[color:var(--site-accent-text)]`,children:["speaking"===g?(0,a.jsx)(s,{}):"paused"===g?(0,a.jsx)(r,{}):(0,a.jsx)(t,{}),(0,a.jsx)("span",{children:_})]}),w&&(0,a.jsxs)("button",{type:"button",onClick:function(){window.speechSynthesis.cancel(),x.current=0,v("idle")},title:p?.stopListening??"Stop",className:`flex ${k} w-8 items-center justify-center rounded-full border border-[color:var(--site-border)] ${j} text-fg-soft transition hover:border-[color:var(--site-accent)] hover:text-[color:var(--site-accent)]`,children:[(0,a.jsx)(n,{}),(0,a.jsx)("span",{className:"sr-only",children:p?.stopListening??"Stop"})]})]})}])},131222,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(514793);e.s(["ZoomableImage",0,function({original:e,alt:s,sizes:r,className:n,width:o,height:l,loading:c="lazy",fetchPriority:d,caption:h,zoomLabel:m="View full size",closeLabel:p="Close",ariaHidden:g=!1}){let[v,u]=(0,i.useState)(!1),b=(0,t.fullWebp)(e),f=(0,i.useCallback)(()=>u(!1),[]);(0,i.useEffect)(()=>
1{if(!v)return;let e=e=>{"Escape"===e.key&&f()},a=document.body.style.overflow;return document.body.style.overflow="hidden",window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e),document.body.style.overflow=a}},[v,f]);let x=(0,a.jsx)("img",{src:(0,t.webpSrc)(e),srcSet:(0,t.webpSrcSet)(e),sizes:r,width:o,height:l,alt:s,"aria-hidden":g||void 0,className:n,loading:c,fetchPriority:d,decoding:"async"});return b?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("button",{type:"button",onClick:()=>u(!0),"aria-label":h?`${m}: ${h}`:m,className:"group relative block w-full cursor-zoom-in appearance-none border-0 bg-transparent p-0 text-left",children:[x,(0,a.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute bottom-2 right-2 rounded-full bg-black/55 p-1.5 text-white opacity-0 transition-opacity duration-200 group-hover:opacity-100 group-focus-visible:opacity-100",children:(0,a.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,a.jsx)("circle",{cx:"11",cy:"11",r:"7"}),(0,a.jsx)("path",{d:"m20 20-3.5-3.5M11 8v6M8 11h6"})]})})]}),v&&(0,a.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":h||s||m,onClick:f,className:"fixed inset-0 z-[100] flex cursor-zoom-out flex-col items-center justify-center bg-black/90 p-4 sm:p-8",children:[(0,a.jsx)("button",{type:"button",onClick:f,"aria-label":p,className:"absolute end-3 top-3 rounded-full bg-white/10 p-2 text-white transition hover:bg-white/25",children:(0,a.jsx)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:(0,a.jsx)("path",{d:"M18 6 6 18M6 6l12 12"})})}),(0,a.jsx)("img",{src:b,alt:s,className:"max-h-full max-w-full object-contain",onClick:e=>e.stopPropagation()}),h&&(0,a.jsx)("p",{className:"mt-3 max-w-3xl text-center text-sm text-white/80",children:h})]})]}):x}])},986073,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(514793),s=e.i(131222),r=e.i(174080);let n=[.85,1,1.15,1.3,1.5],o="fenul_reader_font_scale_index";function l(){return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0,children:[(0,a.jsx)("path",{d:"M4 19.5V6a2 2 0 0 1 2-2h13a1 1 0 0 1 1 1v13.5"}),(0,a.jsx)("path",{d:"M4 19.5A2.5 2.5 0 0 0 6.5 22H20"}),(0,a.jsx)("path",{d:"M4 19.5A2.5 2.5 0 0 1 6.5 17H20V4"})]})}function c(){return(0,a.jsx)("svg",{viewBox:"0 0 24 24",className:"h-4 w-4",fill:"none",stroke:"currentColor",strokeWidth:"2.5","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M18 6 6 18M6 6l12 12"})})}e.s(["ArticleReaderMode",0,function({title:e,summary:d,bylineText:h,publishedAtText:m,image:p,bodyParagraphs:g,isRtl:v=!1,variant:u="compact",labels:b}){let[f,x]=(0,i.useState)(!1),[y,w]=(0,i.useState)(1),_=(0,i.useRef)(null);function k(e){let a=Math.max(0,Math.min(n.length-1,e));w(a),window.localStorage.setItem(o,String(a))}(0,i.useEffect)(()=>{let e=window.localStorage.getItem(o),a=null!==e?Number(e):NaN;Number.isInteger(a)&&a>=0&&a<n.length&&w(a)},[]),(0,i.useEffect)(()=>{if(f)return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e);function e(e){"Escape"!==e.key||_.current?.querySelector('[role="dialog"][aria-modal="true"]')||x(!1)}},[f]);let j=n[y];return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("button",{type:"button",onClick:()=>x(!0),title:b?.readerModeCta??"Reader",className:`flex ${"full"===u?"h-9":"h-8"} shrink-0 items-center gap-1.5 whitespace-nowrap rounded-full border border-[color:var(--site-border)] ${"full"===u?"bg-[color:var(--site-bg)]":""} px-3.5 text-[11px] font-bold text-fg-soft transition hover:border-[color:var(--site-accent)] hover:text-[color:var(--site-accent-text)]`,children:[(0,a.jsx)(l,{}),(0,a.jsx)("span",{children:b?.readerModeCta??"Reader"})]}),f&&"u">typeof document&&(0,r.createPortal)((0,a.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":b?.readerModeCta??"Reader",dir:v?"rtl":"ltr",onClick:()=>x(!1),className:"fixed inset-0 z-[300] overflow-y-auto bg-[color:var(--site-bg)]",children:(0,a.jsxs)("div",{ref:_,onClick:e=>e.stopPropagation(),className:"mx-auto min-h-full max-w-2xl px-5 pb-16 pt-4 sm:px-8",children:[(0,a.jsxs)("div",{className:"sticky top-0 z-10 -mx-5 flex items-center justify-between border-b border-[color:var(--site-border)] bg-[color:var(--site-bg)] px-5 py-3 sm:-mx-8 sm:px-8",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("button",{type:"button",onClick:()=>k(y-1),disabled:0===y,title:b?.decreaseFontSize??"Smaller",className:"flex h-8 w-8 items-center justify-center rounded-full border border-[color:var(--site-border)] text-sm font-bold text-fg-soft transition hover:border-[color:var(--site-accent)] hover:text-[color:var(--site-accent-text)] disabled:opacity-30",children:"A"}),(0,a.jsx)("button",{type:"button",onClick:()=>k(y+1),disabled:y===n.length-1,title:b?.increaseFontSize??"Larger",className:"flex h-8 w-8 items-center justify-center rounded-full border border-[color:var(--site-border)] text-lg font-bold text-fg-soft transition hover:border-[color:var(--site-accent)] hover:text-[color:var(--site-accent-text)] disabled:opacity-30",children:"A"})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>x(!1),title:b?.closeReaderMode??"Close",className:"flex h-8 w-8 items-center justify-center rounded-full border border-[color:var(--site-border)] text-fg-soft transition hover:border-[color:var(--site-accent)] hover:text-[color:var(--site-accent)]",children:[(0,a.jsx)(c,{}),(0,a.jsx)("span",{className:"sr-only",children:b?.closeReaderMode??"Close"})]})]}),(0,a.jsxs)("article",{className:"pt-6",style:{fontSize:`${j}rem`,lineHeight:1.75},children:[p&&(0,a.jsx)("div",{className:"mb-5",children:(0,a.jsx)(s.ZoomableImage,{original:p,sizes:t.SIZES.body,alt:"",ariaHidden:!0,loading:"lazy",className:"w-full rounded-lg object-cover",zoomLabel:b?.viewFullSize??"View full size",closeLabel:b?.closeImage??"Close"})}),(0,a.jsx)("h1",{className:"font-display font-extrabold leading-tight tracking-tight",style:{fontSize:"1.7em"},children:e}),d&&(0,a.jsx)("p",{className:"mt-3 text-fg-muted",style:{fontSize:"1.05em"},children:d}),(0,a.jsxs)("p",{className:"mt-4 text-xs text-fg-soft",children:[h," · ",m]}
1),(0,a.jsx)("div",{className:"mt-6 space-y-4 text-fg",children:g.map((e,i)=>(0,a.jsx)("p",{children:e.text},i))})]})]})}),document.body)]})}])},938030,e=>{"use strict";var a=e.i(843476),i=e.i(271645);let t="fx-geo-country",s=/football/i,r=new Set(["SCRIPT","STYLE","NOSCRIPT","TEXTAREA","INPUT","CODE","PRE"]);function n(e){let a=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(e){let a=e.nodeValue;if(!a||!s.test(a))return NodeFilter.FILTER_REJECT;let i=e.parentElement;return!i||r.has(i.tagName)||i.closest('[data-term-swap="off"]')?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),i=[];for(;a.nextNode();)i.push(a.currentNode);for(let e of i)e.nodeValue=(e.nodeValue??"").replace(/\bfootball\b/gi,e=>e===e.toUpperCase()?"SOCCER":e[0]===e[0].toUpperCase()?"Soccer":"soccer")}e.s(["SoccerTermSwap",0,function({active:e,children:s}){let r=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=r.current;if(!e||!a)return;let i=function(){try{let e=document.cookie.match(/(?:^|;\s*)geo-country=([^;]*)/),a=e?decodeURIComponent(e[1]):"";return/^[A-Z]{2}$/.test(a)?a:null}catch{return null}}()??function(){try{let e=window.localStorage.getItem(t);if(!e)return null;let a=JSON.parse(e);if("string"!=typeof a.c||"number"!=typeof a.t||Date.now()-a.t>864e5)return null;return/^[A-Z]{2}$/.test(a.c)?a.c:null}catch{return null}}();if(i){"US"===i&&n(a);return}let s=new AbortController;return fetch("/api/geo",{signal:s.signal,cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{let a=e&&"string"==typeof e.country?e.country:null;if(a&&/^[A-Z]{2}$/.test(a)){try{document.cookie=`geo-country=${encodeURIComponent(a)}; path=/; max-age=86400; samesite=lax`}catch{}try{window.localStorage.setItem(t,JSON.stringify({c:a,t:Date.now()}))}catch{}"US"===a&&r.current&&n(r.current)}}).catch(()=>{}),()=>s.abort()},[e]),(0,a.jsx)("div",{ref:r,style:{display:"contents"},children:s})}])},702899,103556,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(961504),s=e.i(603249);let r=null;function n(){return r||(r=e.A(627510)),r}async function o(e,a){let[{doc:i,getDoc:t},r]=await Promise.all([n(),(0,s.getDb)()]),o=await t(i(r,"pdp_votes",e,"items",a));if(!o.exists())return null;let l=o.data().value;return"like"===l||"dislike"===l?l:null}async function l(e){let[{collection:a,getCountFromServer:i,query:t,where:r},o]=await Promise.all([n(),(0,s.getDb)()]),l=a(o,"pdp_votes",e,"items"),[c,d]=await Promise.all([i(t(l,r("value","==","like"))),i(t(l,r("value","==","dislike")))]);return{like:c.data().count,dislike:d.data().count}}async function c(e,a,i){let[{doc:t,setDoc:r,serverTimestamp:o},l]=await Promise.all([n(),(0,s.getDb)()]);await r(t(l,"pdp_votes",e,"items",a),{value:i,updatedAt:o()},{merge:!1})}async function d(e,a){let[{doc:i,deleteDoc:t},r]=await Promise.all([n(),(0,s.getDb)()]);await t(i(r,"pdp_votes",e,"items",a))}async function h(e,a,i){let[{collection:t,query:r,orderBy:o,onSnapshot:l,Timestamp:c},d]=await Promise.all([n(),(0,s.getDb)()]);return l(r(t(d,"pdp_comments",`${e}__${a}`,"items"),o("createdAt","asc")),e=>{let a=[];e.forEach(e=>{let i=e.data();a.push({id:e.id,uid:String(i.uid??""),authorHandle:String(i.authorHandle??"Member"),text:String(i.text??""),parentCommentId:i.parentCommentId??null,depth:Number(i.depth??0),status:i.status??"visible",createdAt:i.createdAt instanceof c?i.createdAt.toDate():new Date,reportCount:Number(i.reportCount??0)})}),i(a)})}function m(e){let a=e.filter(e=>"visible"===e.status||"reported"===e.status),i=new Map;for(let e of a)i.set(e.id,{...e,children:[]});let t=[];for(let e of a){let a=i.get(e.id),s=e.parentCommentId?i.get(e.parentCommentId):void 0;s?s.children.push(a):t.push(a)}let s=(e,a)=>e.createdAt.getTime()-a.createdAt.getTime(),r=e=>{for(let a of(e.sort(s),e))r(a.children)};return r(t),t}async function p(e,a){let i=await e.getIdToken(),t=await fetch("/api/comments",{method:"POST",headers:{"Content-Type":"application/json","X-Firebase-Token":i},body:JSON.stringify(a)}),s=await t.json().catch(()=>({error:"Bad response"}));return t.ok&&s.ok?{ok:!0,comment:{...s.comment,createdAt:new Date(s.comment.createdAt??Date.now())},earnedPoints:s.earnedPoints??null}:{ok:!1,status:t.status,error:String(s.error??"request_failed")}}async function g(e,a){let i=`${e}__${a.commentId}`;try{let[{doc:t,setDoc:r,serverTimestamp:o},l]=await Promise.all([n(),(0,s.getDb)()]);await r(t(l,"pdp_comment_reports",i),{reporterUid:e,site:a.site,slug:a.slug,commentId:a.commentId,createdAt:o()})}catch(e){if(e?.code!=="permission-denied")throw e}}async function v(e){let[{doc:a,getDoc:i},t]=await Promise.all([n(),(0,s.getDb)()]),r=await i(a(t,"users",e));if(!r.exists())return null;let o=r.data().commentHandle;return"string"==typeof o&&o.length>=3?o:null}async function u(e,a){let[{doc:i,setDoc:t,serverTimestamp:r},o]=await Promise.all([n(),(0,s.getDb)()]);await t(i(o,"users",e),{commentHandle:a,commentHandleSetAt:r()},{merge:!0})}e.s(["buildCommentTree",0,m,"clearMyVote",0,d,"getCommentHandle",0,v,"getMyVote",0,o,"getVoteCounts",0,l,"postComment",0,p,"reportComment",0,g,"setCommentHandle",0,u,"setMyVote",0,c,"targetKeyForArticle",0,function(e,a){return`article:${e}:${a}`},"targetKeyForComment",0,function(e){return`comment:${e}`},"watchComments",0,h],103556);let b=(0,i.createContext)(null);e.s(["PdpEngagementProvider",0,function({site:e,slug:s,children:r}){let{user:n,loading:o}=(0,t.useFactlenAuth)(),[l,c]=(0,i.useState)([]),[d,g]=(0,i.useState)(!0),[f,x]=(0,i.useState)(null),[y,w]=(0,i.useState)(!0);(0,i.useEffect)(()=>{let a;g(!0);let i=!1;return h(e,s,e=>{c(m(e)),g(!1)}).then(e=>{i?e():a=e}),()=>{i=!0,a?.()}},[e,s]),(0,i.useEffect)(()=>
1{if(o)return;if(!n){x(null),w(!1);return}let e=!1;return w(!0),v(n.uid).then(a=>{e||(x(a),w(!1))}),()=>{e=!0}},[o,n]);let _=(0,i.useMemo)(()=>({site:e,slug:s,signedIn:!!n,uid:n?.uid??null,commentTree:l,commentsLoading:d,commentHandle:f,handleLoading:y,async setHandle(e){if(!n)return{ok:!1,error:"signed_out"};try{return await u(n.uid,e),x(e),{ok:!0}}catch{return{ok:!1,error:"save_failed"}}},postComment:async(a,i)=>n?p(n,{site:e,slug:s,text:a,parentCommentId:i}):{ok:!1,status:401,error:"signed_out"}}),[e,s,n,l,d,f,y]);return(0,a.jsx)(b.Provider,{value:_,children:r})},"usePdpEngagement",0,function(){let e=(0,i.useContext)(b);if(!e)throw Error("usePdpEngagement must be used inside <PdpEngagementProvider>");return e}],702899)},344557,e=>{"use strict";var a=e.i(843476),i=e.i(702899),t=e.i(271645),s=e.i(661352),r=e.i(961504),n=e.i(103556);function o({targetKey:e,labels:i,size:c="sm",className:d=""}){let{user:h,loading:m}=(0,r.useFactlenAuth)(),[p,g]=(0,t.useState)(null),[v,u]=(0,t.useState)(null),[b,f]=(0,t.useState)(!1),[x,y]=(0,t.useState)(!1);async function w(a){if(m)return;if(!h)return void y(!0);if(b)return;let i=p===a?null:a;f(!0),g(i),u(e=>{if(!e)return e;let a={...e};return"like"===p&&(a.like-=1),"dislike"===p&&(a.dislike-=1),"like"===i&&(a.like+=1),"dislike"===i&&(a.dislike+=1),a});try{null===i?await (0,n.clearMyVote)(e,h.uid):await (0,n.setMyVote)(e,h.uid,i)}catch{g(p),u(v)}finally{f(!1)}}(0,t.useEffect)(()=>{let a=!1;return(0,n.getVoteCounts)(e).then(e=>{a||u(e)}),h?(0,n.getMyVote)(e,h.uid).then(e=>{a||g(e)}):g(null),()=>{a=!0}},[e,h]);let _="sm"===c?"h-3.5 w-3.5":"h-4 w-4",k=i?.likeLabel??"Like",j=i?.dislikeLabel??"Dislike",N=`inline-flex items-center gap-1 rounded-full border px-2 py-0.5 font-semibold transition disabled:opacity-50 ${"sm"===c?"text-[11px]":"text-xs"}`,S=e=>
1e?"border-[color:var(--site-accent-text)] bg-[color:var(--site-accent-soft)] text-[color:var(--site-accent-text)]":"border-[color:var(--site-border)] text-fg-soft hover:border-[color:var(--site-accent-text)] hover:text-[color:var(--site-accent-text)]";return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("span",{className:`inline-flex items-center gap-1.5 ${d}`,children:[(0,a.jsxs)("button",{type:"button",onClick:()=>void w("like"),disabled:b,"aria-pressed":"like"===p,"aria-label":k,title:k,className:`${N} ${S("like"===p)}`,children:[(0,a.jsx)(l,{className:_,up:!0,filled:"like"===p}),(0,a.jsx)("span",{children:v?v.like:"–"})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>void w("dislike"),disabled:b,"aria-pressed":"dislike"===p,"aria-label":j,title:j,className:`${N} ${S("dislike"===p)}`,children:[(0,a.jsx)(l,{className:_,up:!1,filled:"dislike"===p}),(0,a.jsx)("span",{children:v?v.dislike:"–"})]})]}),(0,a.jsx)(s.SignInModal,{open:x,onClose:()=>y(!1),headline:"Sign in to vote"})]})}function l({up:e,filled:i,className:t}){return(0,a.jsx)("svg",{"aria-hidden":!0,viewBox:"0 0 24 24",className:`${t} ${e?"":"rotate-180"}`,fill:i?"currentColor":"none",stroke:"currentColor",strokeWidth:1.8,strokeLinejoin:"round",strokeLinecap:"round",children:(0,a.jsx)("path",{d:"M7 10v11H3V10h4Zm0 0 5-8a2.5 2.5 0 0 1 2.5 2.5L13.5 10H19a2 2 0 0 1 2 2.4l-1.6 7A2 2 0 0 1 17.4 21H7"})})}function c({labels:e,onSaved:s}){let{setHandle:r}=(0,i.usePdpEngagement)(),[n,o]=(0,t.useState)(""),[l,d]=(0,t.useState)(!1),[h,m]=(0,t.useState)("");async function p(){let e=n.trim();if(e.length<3||e.length>24)return void m("Choose a name between 3 and 24 characters.");d(!0),m("");let a=await r(e);d(!1),a.ok?s?.():m("Could not save — try again.")}return(0,a.jsxs)("div",{className:"rounded-lg border border-[color:var(--site-border)] bg-[color:var(--site-muted)] p-3",children:[(0,a.jsx)("p",{className:"mb-2 text-xs font-semibold text-fg-soft",children:e?.chooseHandleCta??"Choose a display name"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("input",{value:n,onChange:e=>o(e.target.value),maxLength:24,placeholder:"Your display name",className:"min-w-0 flex-1 rounded-md border border-[color:var(--site-border)] bg-[color:var(--site-surface)] px-2.5 py-1.5 text-sm outline-none focus:border-[color:var(--site-accent-text)]"}),(0,a.jsx)("button",{type:"button",onClick:()=>void p(),disabled:l||n.trim().length<3,className:"shrink-0 rounded-md border border-[color:var(--site-accent-text)] bg-[
1color:var(--site-accent-soft)] px-3 py-1.5 text-sm font-semibold text-[color:var(--site-accent-text)] transition disabled:opacity-50",children:"Save"})]}),h?(0,a.jsx)("p",{className:"mt-1.5 text-[11px] font-semibold text-[color:var(--site-against)]",children:h}):null]})}function d({parentCommentId:e,onPosted:r,labels:n,autoFocus:o=!1}){let{signedIn:l,commentHandle:h,handleLoading:m,postComment:p}=(0,i.usePdpEngagement)(),[g,v]=(0,t.useState)(""),[u,b]=(0,t.useState)(!1),[f,x]=(0,t.useState)(""),[y,w]=(0,t.useState)(null),[_,k]=(0,t.useState)(!1);async function j(){if(!l)return void k(!0);let a=g.trim();if(!a||u)return;b(!0),x("");let i=await p(a,e);(b(!1),i.ok)?(v(""),w(i.earnedPoints),r?.()):x("moderation_blocked"===i.error?"That comment couldn't be posted.":"Something went wrong — try again.")}return!l||m||h?(0,a.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,a.jsx)("textarea",{value:g,onChange:e=>v(e.target.value),onFocus:()=>{l||k(!0)},maxLength:1e3,rows:e?2:3,autoFocus:o,placeholder:n?.commentPlaceholder??"Add a comment…",className:"w-full resize-none rounded-md border border-[color:var(--site-border)] bg-[color:var(--site-surface)] px-2.5 py-1.5 text-sm outline-none focus:border-[color:var(--site-accent-text)]"}),(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsx)("div",{className:"flex items-center gap-2",children:f?(0,a.jsx)("span",{className:"text-[11px] font-semibold text-[color:var(--site-against)]",children:f}):y?(0,a.jsx)("span",{className:"text-[11px] font-semibold text-[color:var(--site-accent-text)]",children:n?.earnedPointsToast??`You earned ${y} points`}):null}),(0,a.jsx)("button",{type:"button",onClick:()=>void j(),disabled:u||!g.trim(),className:"shrink-0 rounded-md border border-[color:var(--site-accent-text)] bg-[
1color:var(--site-accent-soft)] px-3 py-1.5 text-sm font-semibold text-[color:var(--site-accent-text)] transition disabled:opacity-50",children:n?.postCommentCta??"Post"})]}),(0,a.jsx)(s.SignInModal,{open:_,onClose:()=>k(!1),headline:"Sign in to comment"})]}):(0,a.jsx)(c,{labels:n})}function h({node:e,labels:r}){let{site:l,slug:c,signedIn:m,uid:p}=(0,i.usePdpEngagement)(),[g,v]=(0,t.useState)(!1),[u,b]=(0,t.useState)(e.reportCount>0),[f,x]=(0,t.useState)(!1);async function y(){if(!m||!p)return void x(!0);if(!u)try{await (0,n.reportComment)(p,{site:l,slug:c,commentId:e.id}),b(!0)}catch{}}let w=Math.min(e.depth,6);return(0,a.jsxs)("div",{style:{marginInlineStart:e.depth>0?`${16*w}px`:void 0},className:e.depth>0?"mt-3 border-l border-[color:var(--site-border)] pl-3":"mt-4 first:mt-0",children:[(0,a.jsx)("div",{className:"text-xs font-semibold text-fg",children:e.authorHandle}),(0,a.jsx)("p",{className:"mt-0.5 whitespace-pre-wrap text-sm text-fg",children:e.text}),(0,a.jsxs)("div",{className:"mt-1.5 flex flex-wrap items-center gap-2",children:[(0,a.jsx)(o,{targetKey:(0,n.targetKeyForComment)(e.id),labels:r}),(0,a.jsx)("button",{type:"button",onClick:()=>v(e=>!e),className:"text-[11px] font-semibold text-fg-soft transition hover:text-[color:var(--site-accent-text)]",children:r?.replyCta??"Reply"}),(0,a.jsx)("button",{type:"button",onClick:()=>void y(),disabled:u,className:"text-[11px] font-semibold text-fg-soft transition hover:text-[color:var(--site-against)] disabled:opacity-50",children:u?"Reported":r?.reportCommentCta??"Report"})]}),g?(0,a.jsx)("div",{className:"mt-2",children:(0,a.jsx)(d,{parentCommentId:e.id,labels:r,autoFocus:!0,onPosted:()=>v(!1)})}):null,e.children.map(e=>(0,a.jsx)(h,{node:e,labels:r},e.id)),(0,a.jsx)(s.SignInModal,{open:f,onClose:()=>x(!1),headline:"Sign in to report"})]})}e.s(["PdpCommentsSection",0,function({labels:e}){let{site:t,slug:s,commentTree:r,commentsLoading:l}=(0,i.usePdpEngagement)();return(0,a.jsx)("section",{className:"border-b border-[color:var(--site-border)]",children:(0,a.jsxs)("div",{className:"mx-auto max-w-5xl px-4 py-6 sm:px-6",children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between gap-3",children:[(0,a.jsx)("h2",{className:"font-display text-lg font-semibold text-fg",children:e?.commentsHeading??"Comments"}),(0,a.jsx)(o,{targetKey:(0,n.targetKeyForArticle)(t,s),labels:e,size:"md"})]}),(0,a.jsx)(d,{labels:e}),(0,a.jsx)("div",{className:"mt-5",children:l?null:0===r.length?(0,a.jsx)("p",{className:"text-sm text-fg-soft",children:e?.commentsEmpty??"Be the first to comment."}):r.map(i=>(0,a.jsx)(h,{node:i,labels:e},i.id))})]})})}],344557)},569663,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645),s=e.i(733880),r=e.i(420810),n=e.i(514793),o=e.i(976211);function l(e){return e.replace(/^\/topics\//,"")}let c=["news-politics","world","business","technology","ai","science","energy","sports","perspectives"],d={src:"https://media.factlen.com/factlen/news_fallback.webp",title:"Factlen topic coverage",category:"Factlen"},h={src:"https://media.koohestun.com/koohestun/news_fallback.webp",title:"پوشش موضوعی کوهستان",category:"کوهستان"};function m(e,a){if(!e||"/"===e)return a;let i=e.endsWith("/")?e.slice(0,-1):e;return`${i}${a}`.replace(/\/+/g,"/")}function p(e){return e.trim().toLowerCase()}e.s(["TopicsPage",0,function({siteBasePath:e="",heroImages:g=[],labels:v,topicCounts:u,sections:b=s.FACTLEN_NAV_SECTIONS}){let[f,x]=(0,t.useState)(""),[y,w]=(0,t.useState)("All"),_=p(f),k=g.length>0?g.slice(0,6):[v?h:d],j=v?"https://koohestun.com":"https://factlen.com",N=`${j}/topics`,S=(0,t.useMemo)(()=>u?b.map(e=>{let a=l(e.href),i=u[a]?.subs??{},t=e=>e.href.replace(`/topics/${a}/`,""),s=e.items.filter(e=>!!i[t(e)]?.shown),r=s.length>0||!v?s:(0,o.thinNavFallbackByRank)(e.items,t,i);return{...e,items:r,_strictCount:s.length}}).filter(e=>{let a=l(e.href);return e._strictCount>0||!!u[a]?.shown}).map(({_strictCount:e,...a})=>a):b,[u,b,v]),A=(0,t.useMemo)(()=>{let e=S.map((e,a)=>{let i=l(e.href);return{"@type":"ListItem",position:a+1,name:v?.categoryLabels?.[i]??e.title,url:`${j}${e.href}`}}),a=v?.topicsEyebrow??"Topics";return JSON.stringify({"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":`${N}#collection`,url:N,name:a,inLanguage:v?.inLanguage??"en",isPartOf:{"@type":"WebSite","@id":`${j}/#website`},breadcrumb:{"@id":`${N}#breadcrumb`},mainEntity:{"@id":`${N}#sections`}},{"@type":"ItemList","@id":`${N}
1#sections`,name:a,numberOfItems:e.length,itemListElement:e},{"@type":"BreadcrumbList","@id":`${N}#breadcrumb`,itemListElement:[{"@type":"ListItem",position:1,name:v?.navHome??"Home",item:j},{"@type":"ListItem",position:2,name:a,item:N}]}]})},[S,v,j,N]),z=(0,t.useMemo)(()=>S.filter(e=>"All"===y||l(e.href)===y).filter(e=>!_||p(e.title).includes(_)||e.items.some(e=>p(e.label).includes(_))).map(e=>!_||p(e.title).includes(_)?e:{...e,items:e.items.filter(e=>p(e.label).includes(_))}),[_,y,S]);return(0,a.jsxs)("article",{className:"bg-[color:var(--site-bg)] text-[color:var(--site-fg)]",children:[(0,a.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:A}}),(0,a.jsx)("section",{className:"border-b border-[color:var(--site-border)]",children:(0,a.jsxs)("div",{className:"mx-auto grid max-w-7xl gap-8 px-4 py-8 sm:px-6 lg:grid-cols-[minmax(0,1fr)_400px] lg:py-10",children:[(0,a.jsxs)("div",{className:"flex min-w-0 flex-col justify-center",children:[(0,a.jsx)("h1",{className:"max-w-3xl font-display text-4xl font-extrabold leading-[1.05] tracking-tight sm:text-5xl",children:v?.topicsEyebrow??"Topics"}),(0,a.jsxs)("div",{className:"mt-6 max-w-2xl",children:[(0,a.jsx)("label",{className:"sr-only",htmlFor:"topic-search",children:v?.searchTopicsLabel??"Search topics"}),(0,a.jsx)("input",{id:"topic-search",type:"search",value:f,onChange:e=>x(e.target.value),placeholder:v?.searchTopicsPlaceholder??"Search topics",className:"h-12 w-full rounded-lg border border-[color:var(--site-border)] bg-[color:var(--site-bg)] px-4 text-base text-[color:var(--site-fg)] outline-none transition placeholder:text-fg-faint focus:border-[color:var(--site-accent)] focus:ring-4 focus:ring-[color-mix(in_srgb,var(--site-accent)_12%,transparent)]"})]})]}),(0,a.jsx)("div",{className:"grid h-full min-h-[260px] grid-cols-3 grid-rows-2 gap-2 overflow-hidden rounded-lg border border-[color:var(--site-border)] bg-[color:var(--site-card,var(--site-bg))] p-2",children:k.map((t,s)=>(0,a.jsxs)(i.default,{href:m(e,"/news"),className:`group relative overflow-hidden rounded-md ${0===s?"col-span-2 row-span-2":""}`,children:[(0,a.jsx)("img",{src:(0,n.webpSrc)(t.src),srcSet:(0,n.webpSrcSet)(t.src),sizes:n.SIZES.card,alt:"",className:"h-full min-h-[124px] w-full object-cover transition duration-300 group-hover:scale-[1.03]",loading:0===s?"eager":"lazy",decoding:0===s?"sync":"async"}),(0,a.jsxs)("span",{className:"absolute inset-x-0 bottom-0 bg-gradient-to-t from-black/80 to-transparent p-3 text-white",children:[(0,a.jsx)("span",{className:"block text-[10px] font-bold uppercase tracking-[0.12em] text-white/70",children:v?.categoryLabels?.[t.category]??t.category}),(0,a.jsx)("span",{className:"line-clamp-2 text-xs font-bold leading-tight",children:t.title})]})]},`${t.src}-${s}`))})]})}),(0,a.jsx)("section",{className:"border-b border-[color:var(--site-border)] bg-[color:var(--site-card,var(--site-bg))]",children:(0,a.jsx)("div",{className:"mx-auto max-w-7xl px-4 py-4 sm:px-6",children:(0,a.jsx)("div",{className:"flex gap-2 overflow-x-auto",children:["All",...c.filter(e=>S.some(a=>l(a.href)===e))].map(e=>{let i=y===e,t="All"===e?v?.allTab??"All":v?.categoryLabels?.[e]??S.find(a=>l(a.href)===e)?.title??e;return(0,a.jsx)("button",{type:"button",onClick:()=>w(e),"aria-pressed":i,className:`shrink-0 rounded-full border px-3.5 py-2 text-sm font-bold transition ${i?"border-[color:var(--site-accent)] bg-[color:var(--site-accent)] text-[color:var(--site-bg)]":"border-[color:var(--site-border)] text-fg-muted hover:border-[color:var(--site-accent)]/50 hover:text-[color:var(--site-accent-text)]"}`,children:t},e)})})})}),(0,a.jsx)("section",{className:"mx-auto max-w-7xl px-4 py-6 sm:px-6 lg:py-8",children:(0,a.jsx)("nav",{"aria-label":v?.allTopicsAria??"All topics",className:"grid gap-4 lg:grid-cols-3 xl:grid-cols-4",children:z.map(t=>{let s=l(t.href),n=v?.categoryLabels?.[s]??t.title;return(0,a.jsxs)("section",{className:"rounded-lg border border-[color:var(--site-border)] bg-[color:var(--site-bg)] p-4 shadow-[0_18px_48px_-42px_rgba(0,0,0,0.45)]",children:[(0,a.jsx)("h2",{className:"mb-3 text-base font-extrabold leading-tight",children:(0,a.jsx)(i.default,{href:m(e,t.href),className:"block text-[color:var(--site-fg)] transition hover:text-[color:var(--site-accent-text)]",children:n})}),(0,a.jsx)("ul",{className:"grid grid-cols-2 gap-x-3 gap-y-2 sm:grid-cols-3 lg:grid-cols-2",children:t.items.map(t=>{let n=t.href.replace(`/topics/${s}/`,""),o=(v?r.KOOHESTUN_SUBCATEGORY_LABELS[`${s}/${n}`]:void 0)??t.label;return(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:m(e,t.href),className:"block rounded px-2 py-1 text-sm leading-snug text-fg-muted transition hover:bg-[color-mix(in_srgb,var(--site-accent)_7%,transparent)] hover:text-[color:var(--site-accent-text)]",children:o})},t.label)})})]},t.title)})})})]})}])},109219,862552,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(16508),s=e.i(514793);e.s(["StoryCard",0,function({story:e,base:r,labels:n}){let o=(0,t.sourceCount)(e),l=function(e){let a=e.perspectives??[];if(0===a.length)return[];let i=[...a].map(e=>({label:e.label,weight:Math.max(0,e.weight??0)})).sort((e,a)=>a.weight-e.weight).slice(0,3),s=(0,t.perspectivePalette)(i.length),r=i.reduce((e,a)=>e+a.weight,0)||1;return i.map((e,a)=>({label:e.label,pct:Math.round(e.weight/r*100),color:s[a]}))}(e);return(0,a.jsxs)(i.default,{href:function(e,a){if(!e||"/"===e)return a;let i=e.endsWith("/")?e.slice(0,-1):e;return`${i}${a}`.replace(/\/+/g,"/")}(r,`/news/${e.slug}`),className:"group flex flex-col overflow-hidden rounded-md border border-[color:var(--site-border)] bg-[color:var(--site-card,var(--site-bg))] transition hover:border-[color:color-mix(in_srgb,var(--site-accent)_45%,transparent)] hover:shadow-[var(--shadow-2)]",children:[(0,a.jsxs)("div",{className:"relative aspect-[16/9] overflow-hidden bg-black",children:[(0,a.jsx)("img",{src:(0,s.webpSrc)(e.image),srcSet:(0,s.webpSrcSet)(e.image),sizes:s.SIZES.card,decoding:"async",alt:"","aria-hidden":!0,loading:"lazy",className:"h-full w-full object-cover transition duration-500 group-hover:scale-105"}),(e.editorial_badge||e.top_tags?.[0])&&(0,a.jsxs)("div",{className:"absolute inset-x-0 top-0 flex flex-wrap items-start gap-1.5 p-2",children:[e.editorial_badge?(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-sm bg-white px-1.5 py-0.5 text-[9px] font-extrabold uppercase tracking-wide text-black",title:n?.producedByPrefix?`${n.producedByPrefix} ${e.editorial_badge}`:`Produced by Factlen as ${e.editorial_badge}`,children:[(0,a.jsx)("svg",{viewBox:"0 0 16 16",className:"h-2.5 w-2.5","aria-hidden":!0,
1children:(0,a.jsx)("path",{fill:"currentColor",d:"M2 2h12v2H2zm0 5h12v2H2zm0 5h8v2H2z"})}),e.editorial_badge]}):e.top_tags?.[0]?(0,a.jsx)("span",{className:"rounded-sm bg-white px-1.5 py-0.5 text-[9px] font-extrabold uppercase tracking-wide text-black",children:e.top_tags[0]}):null,e.editorial_badge?e.top_tags?.[0]&&(0,a.jsx)("span",{className:"rounded-sm bg-orange-500 px-1.5 py-0.5 text-[9px] font-extrabold uppercase tracking-wide text-black",children:e.top_tags[0]}):e.top_tags?.[1]&&(0,a.jsx)("span",{className:"rounded-sm bg-orange-500 px-1.5 py-0.5 text-[9px] font-extrabold uppercase tracking-wide text-black",children:e.top_tags[1]})]})]}),(0,a.jsxs)("div",{className:"flex flex-1 flex-col p-4",children:[(0,a.jsx)("h3",{className:"mb-2 line-clamp-3 grow font-display text-base font-extrabold leading-snug text-[color:var(--site-fg)]",children:e.title}),l.length>0&&(0,a.jsxs)("div",{className:"mb-2 mt-1",children:[(0,a.jsx)("div",{className:"mb-1 flex flex-wrap items-center gap-x-2 gap-y-0.5 text-[10px] font-bold uppercase tracking-wide",children:l.map((e,i)=>(0,a.jsxs)("span",{style:{color:(0,t.perspectiveTextColor)(e.color)},title:e.label,className:"truncate",children:[e.label," ",e.pct,"%"]},`${e.label}-${i}`))}),(0,a.jsx)("div",{className:"fx-persp-bar flex h-1.5 overflow-hidden rounded-full bg-[color:var(--site-border)]",children:l.map((e,i)=>(0,a.jsx)("span",{className:"h-full",style:{width:`${e.pct}%`,backgroundColor:(0,t.perspectiveBarFill)(e.color)}},`bar-${e.label}-${i}`))})]}),(0,a.jsxs)("p",{className:"text-[11px] font-semibold text-fg-muted",suppressHydrationWarning:!0,children:[o," ",n?.sourcesWord??"sources"," · ",function(e,a){let i=new Date(e),t=Math.max(1,Math.floor((Date.now()-i.getTime())/6e4));if(t<60)return`${t}${a?.timeAgoMinuteSuffix??"m ago"}`;let s=Math.floor(t/60);if(s<24)return`${s}${a?.timeAgoHourSuffix??"h ago"}`;let r=Math.floor(s/24);return`${r}${a?.timeAgoDaySuffix??"d ago"}`}(e.publishedAt,n),e.thread_entries&&e.thread_entries>1?` \xb7 ${e.thread_entries} ${n?.updatesWord??"updates"}`:""]})]})]})},"selectStories",0,function(e,a,i){return"trending"===e?[...i].sort((e,a)=>(0,t.sourceCount)(a)-(0,t.sourceCount)(e)).slice(0,12):"blindspot"===e?i.filter(t.hasPerspectiveBlindspot):"originals"===e?i.filter(e=>"editorial_synthesis"===e.production_mode||"site_original"===e.production_mode||e.editorial_badge).sort(t.byRecentFirst):"category"===e&&a?i.filter(e=>e.category===a):[...i].sort(t.byRecentFirst)}],109219);let r=[50,100,200];e.s(["LISTING_PAGE_SIZE",0,50,"PER_PAGE_OPTIONS",0,r,"PER_PAGE_STORAGE_KEY",0,"fx-listing-per-page","listingQueryString",0,function(e,a){let i=new URLSearchParams("list"in e?{list:e.list}:{topic:e.topic});return i.set("page",String(a)),i.toString()},"parsePerPage",0,function(e){let a=Number(e);return r.includes(a)?a:50},"perPageWindow",0,function(e,a,i,t,s=50){let r=Math.max(1,Math.round(t/s)),n=Math.max(1,a),o=Math.min(n,e+r-1),l=[];for(let a=e+1;a<=o;a++)l.push(a);return{extraPages:l,from:i>0?Math.min(i,(e-1)*s+1):0,to:i>0?Math.min(i,o*s):0,prevPage:e>1?Math.max(1,e-r):null,nextPage:o<n?o+1:null,view:Math.ceil(e/r),views:Math.ceil(n/r)}},"viewStartPage",0,function(e,a,i=50){return(Math.max(1,e)-1)*Math.max(1,Math.round(a/i))+1}],862552)},390383,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645),s=e.i(109219),r=e.i(16508);let n=[5,10,100];var o=e.i(862552);function l({basePath:e,page:t,perPage:s,w:r,labels:c}){let d=e.replace(/\/+$/,"")||"",h=e=>e<=1?d||"/":`${d}/page/${e}`,m="inline-flex h-9 min-w-9 items-center justify-center rounded-md border border-[color:var(--site-border)] px-3 text-sm font-bold transition",p="bg-[color:var(--site-bg)] text-[color:var(--site-fg)] hover:bg-[color:var(--site-muted)]",g="cursor-default text-fg-muted",v=c?.pagerPrevious??"‹ Prev",u=c?.pagerNext??"Next ›";return(0,a.jsxs)("nav",{className:"mt-6 flex flex-wrap items-center justify-center gap-1.5","aria-label":c?.pagerPaginationAria??"Pagination",children:[null===r.prevPage?(0,a.jsx)("span",{"aria-disabled":"true",className:`${m} ${g}`,children:v}):(0,a.jsx)(i.default,{href:h(r.prevPage),"aria-label":c?.pagerPreviousAria??"Previous page",className:`${m} ${p}`,children:v}),(function(e,a){let i=new Set([1,a]);for(let a=-2;a<=2;a++)i.add(e+a);for(let a of n)i.add(e-a),i.add(e+a);let t=[...i].filter(e=>e>=1&&e<=a).sort((e,a)=>e-a),s=[];return t.forEach((e,a)=>{a>0&&e-t[a-1]>1&&s.push("…"),s.push(e)}),s})(r.view,r.views).map((e,n)=>"…"===e?(0,a.jsx)("span",{className:"px-2 text-fg-muted","aria-hidden":!0,
1children:"…"},`gap-${n}`):(0,a.jsx)(i.default,{href:h((0,o.viewStartPage)(e,s)),"aria-label":`Page ${e}`,"aria-current":e===r.view&&(0,o.viewStartPage)(e,s)===t?"page":void 0,className:`${m} ${e===r.view?"bg-[color:var(--site-accent,#2dd4bf)] text-white border-transparent":p}`,children:e},e)),null===r.nextPage?(0,a.jsx)("span",{"aria-disabled":"true",className:`${m} ${g}`,children:u}):(0,a.jsx)(i.default,{href:h(r.nextPage),"aria-label":c?.pagerNextAria??"Next page",className:`${m} ${p}`,children:u})]})}e.s(["ListingPerPage",0,function({children:e,source:i,page:n,totalPages:c,basePath:d,siteBasePath:h,labels:m}){let p=c*o.LISTING_PAGE_SIZE,[g,v]=(0,t.useState)(50),[u,b]=(0,t.useState)([]),[f,x]=(0,t.useState)("idle"),y="list"in i?`list:${i.list}`:`topic:${i.topic}`;(0,t.useEffect)(()=>{try{v((0,o.parsePerPage)(window.localStorage.getItem(o.PER_PAGE_STORAGE_KEY)))}catch{}},[]);let w=(0,o.perPageWindow)(n,c,p,g),_=w.extraPages.join(",");if((0,t.useEffect)(()=>{if(0===w.extraPages.length){b([]),x("idle");return}let e=new AbortController;return x("loading"),Promise.all(w.extraPages.map(async a=>{let t=await fetch(`/api/listing?${(0,o.listingQueryString)(i,a)}`,{signal:e.signal});if(!t.ok)throw Error(`listing page ${a}: HTTP ${t.status}`);let n=await t.json(),l=Array.isArray(n.items)?n.items:[];return"list"in i?(0,s.selectStories)(i.list,void 0,l):[...l].sort(r.byRecentFirst)})).then(e=>{let a=new Set;b(e.flat().filter(e=>!a.has(e.slug)&&(a.add(e.slug),!0))),x("idle")}).catch(a=>{e.signal.aborted||(console.error("[ListingPerPage]",a),b([]),x("error"))}),()=>e.abort()},[_,y]),c<=1)return(0,a.jsx)(a.Fragment,{children:e});let k=g>50&&"error"!==f,j=m?.listingPerPage??"Per page";return(0,a.jsxs)("div",{"data-listing-body":!0,children:[k&&u.length>0&&(0,a.jsx)("div",{className:"grid gap-5 pb-2 sm:grid-cols-2 lg:grid-cols-3",children:u.map(e=>(0,a.jsx)(s.StoryCard,{story:e,base:h,labels:m},e.slug))}),k&&"loading"===f&&(0,a.jsx)("p",{role:"status",className:"py-4 text-center text-sm text-fg-muted",children:m?.listingLoading??"Loading more articles…"}),"error"===f&&(0,a.jsx)("p",{role:"status",className:"py-4 text-center text-sm text-fg-muted",children:m?.listingLoadFailed??"Couldn't load more articles. Showing 50 per page."}),(0,a.jsx)("div",{className:"mt-8 flex flex-wrap items-center justify-center gap-x-6 gap-y-3 text-sm",children:(0,a.jsxs)("div",{role:"group","aria-label":j,className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"font-semibold text-[color:var(--site-fg)]",children:j}),o.PER_PAGE_OPTIONS.map(e=>(0,a.jsx)("button",{type:"button","aria-pressed":e===g,onClick:()=>(e=>{v(e);try{window.localStorage.setItem(o.PER_PAGE_STORAGE_KEY,String(e))}catch{}window.gtag?.("event","listing_per_page",{per_page:e,page_path:window.location.pathname})})(e),className:`inline-flex h-8 min-w-11 items-center justify-center rounded-md border px-2.5 text-sm font-bold transition ${e===g?"border-transparent bg-[color:var(--site-accent,#2dd4bf)] text-white":"border-[color:var(--site-border)] bg-[color:var(--site-bg)] text-[color:var(--site-fg)] hover:bg-[color:var(--site-muted)]"}`,children:e},e))]})}),k?(0,a.jsx)(l,{basePath:d,page:n,perPage:g,w:w,labels:m}):e]})}],390383)},453927,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(109219),s=e.i(16508);let r=["day","week","month","year"],n={day:864e5,week:6048e5,month:2592e6,year:31536e6},o=/^\d{4}-\d{2}-\d{2}$/;function l(e){if(!o.test(e))return!1;let a=new Date(`${e}T00:00:00Z`);return!Number.isNaN(a.getTime())&&a.toISOString().slice(0,10)===e}async function c(e,a,i,t,r){let n=1,o=Math.max(1,a),l=0;for(;n<=o;){let a=Math.floor((n+o)/2),i=await r(a),t=i[i.length-1];!t||(0,s.rankAt)(t)<e?(l=a,o=a-1):n=a+1}if(0===l)return i;let c=await r(l);return(l-1)*t+c.filter(a=>(0,s.rankAt)(a)>=e).length}async function d(e,a,i,t,s){let r=e.upper?await c(e.upper,a,i,t,s):0,n=e.lower?await c(e.lower,a,i,t,s):i,o=Math.max(0,n-r);return 0===o?{count:0,startPage:0,endPage:0}:{count:o,startPage:Math.floor(r/t)+1,endPage:Math.floor((n-1)/t)+1}}var h=e.i(862552);let m={any:"Any time",day:"Past 24 hours",week:"Past week",month:"Past month",year:"Past year",custom:"Custom range"};function p(e,a){return a?.[({any:"listingDateAny",day:"listingDateDay",week:"listingDateWeek",month:"listingDateMonth",year:"listingDateYear",custom:"listingDateCustom"})[e]]??m[e]}e.s(["ListingDateFilter",0,function({source:e,totalPages:o,siteBasePath:c,labels:m}){let g=o*h.LISTING_PAGE_SIZE,[v,u]=(0,i.useState)("any"),[b,f]=(0,i.useState)(""),[x,y]=(0,i.useState)(""),[w,_]=(0,i.useState)(null),[k,j]=(0,i.useState)({kind:"idle"}),N=(0,i.useRef)(null),S=(0,i.useRef)(new Map),A="list"in e?`list:${e.list}
1`:`topic:${e.topic}`,z=a=>{let i=S.current.get(a);return i||((i=fetch(`/api/listing?${(0,h.listingQueryString)(e,a)}`).then(async e=>{if(!e.ok)throw Error(`listing page ${a}: HTTP ${e.status}`);let i=await e.json();return Array.isArray(i.items)?i.items:[]})).catch(()=>S.current.delete(a)),S.current.set(a,i)),i};(0,i.useEffect)(()=>{S.current=new Map},[A]);let C=()=>{try{return Math.max(1,(0,h.parsePerPage)(window.localStorage.getItem(h.PER_PAGE_STORAGE_KEY))/h.LISTING_PAGE_SIZE)}catch{return 1}},M=async(a,i,r)=>(await Promise.all(Array.from({length:r-i+1},(e,a)=>z(i+a)))).map(i=>{let r;return r=i.filter(e=>{let i;return i=(0,s.rankAt)(e),(!a.lower||i>=a.lower)&&(!a.upper||i<a.upper)}),"list"in e?(0,t.selectStories)(e.list,void 0,r):[...r].sort(s.byRecentFirst)}).flat(),P=null!==w&&"error"!==k.kind;(0,i.useEffect)(()=>{let e=Array.from((N.current?.closest("main")??document).querySelectorAll("[data-listing-body]"));for(let a of e)a.hidden=P;return()=>{for(let a of e)a.hidden=!1}},[P]),(0,i.useEffect)(()=>{if(!w)return void j({kind:"idle"});let e=!1;return j({kind:"finding"}),(async()=>{let e=await d(w,o,g,h.LISTING_PAGE_SIZE,z);if(0===e.count)return{range:e,items:[],nextPage:0};let a=Math.min(e.endPage,e.startPage+C()-1),i=await M(w,e.startPage,a);return{range:e,items:i,nextPage:a<e.endPage?a+1:0}})().then(a=>{e||j({kind:"ready",...a,loadingMore:!1})}).catch(a=>{console.error("[ListingDateFilter]",a),e||j({kind:"error"})}),()=>{e=!0}},[w,A]);let T=e=>window.gtag?.("event","listing_date_filter",{date_filter:e,page_path:window.location.pathname}),E=e=>{if(u(e),"any"===e)_(null),T("any");else"custom"!==e&&(_({lower:new Date(Date.now()-n[e]).toISOString().replace(/\.\d{3}Z$/,"Z")}),T(e))},F=function(e,a){let i,t=e.trim(),s=a.trim();if(!t&&!s||t&&!l(t)||s&&!l(s)||t&&s&&t>s)return null;let r={};return t&&(r.lower=t),s&&((i=new Date(`${s}T00:00:00Z`)).setUTCDate(i.getUTCDate()+1),r.upper=i.toISOString().slice(0,10)),r}(b,x),L="inline-flex h-8 items-center justify-center rounded-full border px-3.5 text-xs font-semibold whitespace-nowrap transition",I="border-[color:var(--site-border)] bg-[color:var(--site-muted)] text-[color:var(--site-fg)] hover:border-[color:var(--site-accent)] hover:text-[color:var(--site-accent-text)]",$="border-[color:var(--site-accent)] bg-[color:var(--site-accent)] text-[color:var(--site-on-accent,#fff)]",B=m?.listingDate??"Date",q="h-8 rounded-md border border-[color:var(--site-border)] bg-[color:var(--site-bg)] px-2 text-xs text-[color:var(--site-fg)]",R="py-6 text-center text-sm text-fg-muted";return(0,a.jsxs)("div",{ref:N,children:[(0,a.jsxs)("div",{role:"group","aria-label":B,className:"flex flex-wrap items-center gap-2",children:[(0,a.jsx)("span",{className:"me-1 text-xs font-bold uppercase tracking-wide text-fg-muted",children:B}),["any",...r,"custom"].map(e=>(0,a.jsx)("button",{type:"button","aria-pressed":v===e,onClick:()=>E(e),className:`${L} ${v===e?$:I}`,children:p(e,m)},e))]}),"custom"===v&&(0,a.jsxs)("div",{className:"mt-3 flex flex-wrap items-end gap-3",children:[(0,a.jsxs)("label",{className:"flex flex-col gap-1 text-xs font-semibold text-fg-muted",children:[m?.listingDateFrom??"From",(0,a.jsx)("input",{type:"date",value:b,max:x||void 0,onChange:e=>f(e.target.value),className:q})]}),(0,a.jsxs)("label",{className:"flex flex-col gap-1 text-xs font-semibold text-fg-muted",children:[m?.listingDateTo??"To",(0,a.jsx)("input",{type:"date",value:x,min:b||void 0,onChange:e=>y(e.target.value),className:q})]}),(0,a.jsx)("button",{type:"button",disabled:!F,onClick:()=>{F&&(_(F),T("custom"))},className:`${L} ${F?$:`${I} opacity-60`}`,children:m?.listingDateApply??"Apply"})]}),w&&(0,a.jsxs)("div",{className:"mt-6","aria-live":"polite",children:["finding"===k.kind&&(0,a.jsx)("p",{className:R,children:m?.listingDateFinding??"Finding articles…"}),"error"===k.kind&&(0,a.jsx)("p",{className:R,children:m?.listingDateFailed??"The date filter is unavailable right now. Showing the full listing."}),"ready"===k.kind&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"mb-4 flex flex-wrap items-center justify-between gap-2",children:[(0,a.jsx)("p",{className:"text-sm font-semibold text-[color:var(--site-fg)]",children:p(v,m)}),(0,a.jsx)("button",{type:"button",onClick:()=>E("any"),className:`${L} ${I}`,children:m?.listingDateClear??"Clear"})]}),0===k.items.length?(0,a.jsx)("p",{className:R,children:m?.listingDateNone??"No articles in this date range."}):(0,a.jsx)("div",{className:"grid gap-5 sm:grid-cols-2 lg:grid-cols-3",children:k.items.map(e=>(0,a.jsx)(t.StoryCard,{story:e,base:c,labels:m},e.slug))}),k.nextPage>0&&(0,a.jsx)("div",{className:"mt-6 flex justify-center",children:(0,a.jsx)("button",{type:"button",disabled:k.loadingMore,onClick:()=>
1{if("ready"!==k.kind||!k.nextPage||!w)return;let e=k.nextPage,a=Math.min(k.range.endPage,e+C()-1);j({...k,loadingMore:!0}),M(w,e,a).then(e=>{j(i=>{if("ready"!==i.kind)return i;let t=new Set(i.items.map(e=>e.slug));return{...i,items:[...i.items,...e.filter(e=>!t.has(e.slug))],nextPage:a<i.range.endPage?a+1:0,loadingMore:!1}})}).catch(e=>{console.error("[ListingDateFilter]",e),j({kind:"error"})})},className:`${L} ${I} h-9 px-5 text-sm`,children:k.loadingMore?m?.listingLoading??"Loading more articles…":m?.listingDateShowMore??"Show more"})})]})]})]})}],453927)},210799,e=>{"use strict";let a=`#version 300 es
2in vec2 a_pos;
3void main() { gl_Position = vec4(a_pos, 0.0, 1.0); }
4`,i=`#version 300 es
5precision mediump float;
6uniform float u_time;
7uniform vec2 u_res;
8uniform vec3 u_colorA;
9uniform vec3 u_colorB;
10uniform float u_intensity;
11out vec4 fragColor;
12mat2 rot(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);}
13float hash(vec2 p){p=fract(p*vec2(234.34,435.345));p+=dot(p,p+34.23);return fract(p.x*p.y);}
14float noise(vec2 p){vec2 i=floor(p);vec2 f=fract(p);vec2 u=f*f*(3.0-2.0*f);return mix(mix(hash(i),hash(i+vec2(1,0)),u.x),mix(hash(i+vec2(0,1)),hash(i+vec2(1,1)),u.x),u.y);}
15float fbm(vec2 p){float v=0.0;float a=0.5;for(int i=0;i<4;i++){v+=a*noise(p);p=rot(0.44)*p*2.1+vec2(3.18,1.67);a*=0.5;}return v;}
16void main(){
17  vec2 uv=gl_FragCoord.xy/u_res;uv.y=1.0-uv.y;
18  float t=u_time*0.10;
19  vec2 q=vec2(fbm(uv+t*0.8),fbm(uv+vec2(1.2,3.4)));
20  vec2 r=vec2(fbm(uv+q+vec2(1.7,9.2)+t*0.35),fbm(uv+q+vec2(8.3,2.8)+t*0.26));
21  float f=fbm(uv+r);
22  vec3 col=mix(u_colorA,u_colorB,clamp(f*2.0,0.0,1.0));
23  col=mix(col,u_colorA*0.5,clamp(length(q)*0.5,0.0,1.0));
24  float vig=1.0-smoothstep(0.3,1.0,length(uv-0.5)*1.4);
25  col*=vig;
26  fragColor=vec4(col*u_intensity,1.0);
27}
28`;function t(e){let a=e.replace("#","");return[parseInt(a.slice(0,2),16)/255,parseInt(a.slice(2,4),16)/255,parseInt(a.slice(4,6),16)/255]}e.s(["injectFluidCanvas",0,function(e,s,r,n=.32,o=1){let l=document.createElement("canvas");Object.assign(l.style,{position:"fixed",inset:"0",width:"100%",height:"100%",pointerEvents:"none",zIndex:"9998",mixBlendMode:"screen",opacity:"0.55"}),l.setAttribute("aria-hidden","true"),e.insertBefore(l,e.firstChild);let c=l.getContext("webgl2",{alpha:!1,antialias:!1});if(!c)return l.remove(),()=>{};function d(e,a){let i=c.createShader(e);return i?(c.shaderSource(i,a),c.compileShader(i),c.getShaderParameter(i,c.COMPILE_STATUS))?i:(c.deleteShader(i),null):null}let h=d(c.VERTEX_SHADER,a),m=d(c.FRAGMENT_SHADER,i);if(!h||!m)return l.remove(),()=>{};let p=c.createProgram();if(c.attachShader(p,h),c.attachShader(p,m),c.linkProgram(p),!c.getProgramParameter(p,c.LINK_STATUS))return l.remove(),()=>{};let g=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,g),c.bufferData(c.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),c.STATIC_DRAW);let v=c.getAttribLocation(p,"a_pos");c.enableVertexAttribArray(v),c.vertexAttribPointer(v,2,c.FLOAT,!1,0,0);let u=c.getUniformLocation(p,"u_time"),b=c.getUniformLocation(p,"u_res"),f=c.getUniformLocation(p,"u_colorA"),x=c.getUniformLocation(p,"u_colorB"),y=c.getUniformLocation(p,"u_intensity"),[w,_,k]=t(s),[j,N,S]=t(r),A="u">typeof navigator&&navigator.hardwareConcurrency<=2,z=Math.min(window.devicePixelRatio||1,A?.6:1.4);function C(){let e=Math.round(window.innerWidth*z),a=Math.round(window.innerHeight*z);(l.width!==e||l.height!==a)&&(l.width=e,l.height=a,c.viewport(0,0,e,a))}C(),window.addEventListener("resize",C,{passive:!0});let M=0,P=performance.now();return M=requestAnimationFrame(function e(a){M=requestAnimationFrame(e),c.useProgram(p),c.uniform1f(u,(a-P)/1e3*o),c.uniform2f(b,l.width,l.height),c.uniform3f(f,w,_,k),c.uniform3f(x,j,N,S),c.uniform1f(y,n),c.drawArrays(c.TRIANGLE_STRIP,0,4)}),()=>{cancelAnimationFrame(M),window.removeEventListener("resize",C),l.remove();try{c.getExtension("WEBGL_lose_context")?.loseContext()}catch{}}}])},601048,e=>{"use strict";var a=e.i(843476),i=e.i(271645);let t="echovira-theme",s={"--ev-bg":"#020208","--ev-fg":"#ffffff"},r={"--ev-bg":"#f5f0e8","--ev-fg":"#1a1714"};function n(e){let a=document.querySelectorAll(".echovira-page-root"),i=window.matchMedia("(prefers-color-scheme: dark)").matches,t="dark"===e||"auto"===e&&i,n=t?s:r;
28a.forEach(e=>{e.removeAttribute("data-ev-theme"),e.setAttribute("data-ev-theme",t?"dark":"light"),Object.entries(n).forEach(([a,i])=>e.style.setProperty(a,i))})}e.s(["EchoviraThemeToggle",0,function(){let[e,s]=(0,i.useState)("auto");(0,i.useEffect)(()=>{let e=localStorage.getItem(t),a="light"===e||"dark"===e?e:"auto";s(a),n(a);let i=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{"auto"===(localStorage.getItem(t)??"auto")&&n("auto")};return i.addEventListener("change",r),()=>i.removeEventListener("change",r)},[]);let r=(0,i.useCallback)(e=>{s(e),"auto"===e?localStorage.removeItem(t):localStorage.setItem(t,e),n(e)},[]),o=[{value:"auto",label:"Auto (system)",icon:(0,a.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":!0,children:[(0,a.jsx)("circle",{cx:"7",cy:"7",r:"5.5"}),(0,a.jsx)("line",{x1:"7",y1:"1.5",x2:"7",y2:"12.5"}),(0,a.jsx)("path",{d:"M1.5 7h5.5"}),(0,a.jsx)("path",{d:"M4 3.7 7 7l-3 3.3"})]})},{value:"light",label:"Light",icon:(0,a.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":!0,children:[(0,a.jsx)("circle",{cx:"7",cy:"7",r:"2.5"}),(0,a.jsx)("line",{x1:"7",y1:"1",x2:"7",y2:"2.2"}),(0,a.jsx)("line",{x1:"7",y1:"11.8",x2:"7",y2:"13"}),(0,a.jsx)("line",{x1:"1",y1:"7",x2:"2.2",y2:"7"}),(0,a.jsx)("line",{x1:"11.8",y1:"7",x2:"13",y2:"7"}),(0,a.jsx)("line",{x1:"2.75",y1:"2.75",x2:"3.6",y2:"3.6"}),(0,a.jsx)("line",{x1:"10.4",y1:"10.4",x2:"11.25",y2:"11.25"}),(0,a.jsx)("line",{x1:"2.75",y1:"11.25",x2:"3.6",y2:"10.4"}),(0,a.jsx)("line",{x1:"10.4",y1:"3.6",x2:"11.25",y2:"2.75"})]})},{value:"dark",label:"Dark",icon:(0,a.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M12.2 8.2A5.5 5.5 0 1 1 5.8 1.8a4.3 4.3 0 0 0 6.4 6.4z"})})}];return(0,a.jsx)("div",{className:"ev-theme-toggle",role:"group","aria-label":"Color theme",children:o.map(i=>(0,a.jsx)("button",{type:"button",onClick:()=>r(i.value),title:i.label,"aria-label":`Switch to ${i.label} theme`,"aria-pressed":e===i.value,children:i.icon},i.value))})}])},920206,e=>{"use strict";e.s(["stripHtmlComments",0,function(e){return e.replace(/<!--[\s\S]*?-->/g,"")}])},350486,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n=`
29    <link rel="preconnect" href="https://fonts.googleapis.com">
30    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
31    <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap" rel="stylesheet">
32    <style>
33        /* WordPress Full Width Override */
34        .vc_row[data-vc-full-width],
35        .wpb_column,
36        .vc_column_container,
37        .wpb_wrapper,
38        .entry-content,
39        .site-content-contain,
40        #content,
41        .site-content,
42        .site,
43        #page,
44        main {
45            width: 100% !important;
46            max-width: 100% !important;
47            padding: 0 !important;
48            margin: 0 !important;
49            margin-top: 0 !important;
50            padding-top: 0 !important;
51        }
52
53        /* Spanish Colors Theme */
54        :root {
55            --ev-bg: #faf8f5;
56            --ev-fg: #2c2c2c;
57            --primary-color: #1a1a1a;
58            --secondary-color: #C60B1E;
59            --accent-color: #FFC400;
60            --terracotta: #E07442;
61            --text-light: #ffffff;
62            --text-dark: #2c2c2c;
63            --background-dark: #1a1614;
64            --background-light: #faf8f5;
65            --gradient-main: linear-gradient(135deg, #C60B1E 0%, #FFC400 100%);
66            --shadow-light: 0 2px 20px rgba(0,0,0,0.1);
67            --shadow-heavy: 0 10px 40px rgba(0,0,0,0.2);
68            --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
69        }
70
71        * {
72            margin: 0;
73            padding: 0;
74            box-sizing: border-box;
75        }
76
77        body {
78            font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
79            line-height: 1.8;
80            color: var(--ev-fg);
81            background: var(--ev-bg);
82            overflow-x: hidden;
83            margin: 0 !important;
84            padding: 0 !important;
85        }
86
87        body.lang-en {
88            direction: ltr;
89        }
90
91        body.lang-es {
92            direction: ltr;
93        }
94
95        /* Hide inactive language */
96        body:not(.lang-es) .lang-es { display: none !important; }
97        body:not(.lang-en) .lang-en { display: none !important; }
98
99        /* Explicitly set fonts */
100        .lang-es, .lang-en {
101            font-family: 'Montserrat', sans-serif !important;
102        }
103
104        /* Language Toggle — flex child of .nav-container (moved there from
105           being a sibling of it), not absolutely positioned over the nav
106           bar: that positioned it relative to .main-nav regardless of
107           .nav-container's own flex layout, landing on top of whatever sat
108           at the nav's right edge (the last nav-menu link on desktop, the
109           hamburger icon on mobile). */
110        .lang-toggle {
111            display: flex;
112            flex-shrink: 0;
113            background: rgba(255,255,255,0.2);
114            border-radius: 25px;
115            padding: 8px;
116            backdrop-filter: blur(10px);
117        }
118
119        .lang-toggle button {
120            background: transparent;
121            border: none;
122            padding: 8px 16px;
123            cursor: pointer;
124            font-weight: 600;
125            border-radius: 20px;
126            transition: var(--transition);
127            font-size: 0.9rem;
128            color: white;
129        }
130
131        .lang-toggle button.active {
132            background: var(--secondary-color);
133            color: white;
134        }
135
136        /* Navigation */
137        .main-nav {
138            position: fixed;
139            top: 0;
140            left: 0;
141            right: 0;
142            background: rgba(26, 26, 26, 0.95);
143            backdrop-filter: blur(20px);
144            z-index: 1000;
145            padding: 1rem 0;
146        }
147
148        .nav-container {
149            max-width: 1200px;
150            margin: 0 auto;
151            padding: 0 20px;
152            display: flex;
153            justify-content: space-between;
154            align-items: center;
155        }
156
157        .logo img { height: 50px; }
158
159        .nav-menu {
160            display: flex;
161            list-style: none;
162            gap: 2rem;
163        }
164
165        .nav-menu a {
166            color: var(--text-light);
167            text-decoration: none;
168            font-weight: 500;
169            transition: var(--transition);
170        }
171
172        .nav-menu a:hover { color: var(--accent-color); }
173
174        .mobile-menu-toggle {
175            display: none;
176            background: none;
177            border: none;
178            color: var(--text-light);
179            font-size: 1.5rem;
180            cursor: pointer;
181        }
182
183        /* Hero Section */
184        .hero-section {
185            min-height: 100vh;
186            /* Worst-case gradient stop (#FFC400 gold) blended with the 55%
187               black ::after scrim below — the real effective background
188               white hero text renders against. Testing convention: the ADA
189               crawler can't see gradients (only background-color), so it
190               falls through to a near-white default and reports
191               white-on-white unless a solid stand-in is declared here. */
192            --ada-contrast-bg: #735800;
193            background: var(--gradient-main);
194            display: flex;
195            align-items: center;
196            justify-content: center;
197            text-align: center;
198            color: var(--text-light);
199            position: relative;
200            overflow: hidden;
201        }
202
203        .hero-section::after {
204            /* White hero text on the gradient's lighter (gold) stop is
205               only 1.6:1. This scrim darkens it to ~6.5:1 without
206               flattening the brand gradient into a solid color. */
207            content: '';
208            position: absolute;
209            inset: 0;
210            background: rgba(0, 0, 0, 0.55);
211            z-index: 1;
212        }
213
214        .hero-section::before {
215            content: '';
216            position: absolute;
217            top: 0;
218            left: 0;
219            right: 0;
220            bottom: 0;
221            background: radial-gradient(circle at 50% 0%, rgba(255,255,255,0.1) 0%, transparent 50%);
222        }
223
224        .hero-content {
225            position: relative;
226            z-index: 2;
227            max-width: 800px;
228            padding: 0 20px;
229        }
230
231        .hero-title {
232            font-size: clamp(3rem, 8vw, 6rem);
233            margin-bottom: 1rem;
234            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
235        }
236
237        .hero-subtitle {
238            font-size: clamp(1.2rem, 3vw, 1.8rem);
239            margin-bottom: 2rem;
240            opacity: 0.9;
241        }
242
243        .cta-button {
244            display: inline-block;
245            padding: 18px 40px;
246            background: white;
247            color: var(--secondary-color);
248            text-decoration: none;
249            border-radius: 50px;
250            font-weight: 600;
251            font-size: 1.1rem;
252            transition: var(--transition);
253            box-shadow: var(--shadow-light);
254        }
255
256        .cta-button:hover {
257            transform: translateY(-3px);
258            box-shadow: var(--shadow-heavy);
259        }
260
261        /* Sections */
262        .section {
263            padding: 80px 0;
264        }
265
266        .section-dark {
267            background: var(--background-dark);
268            color: var(--text-light);
269        }
270
271        .container {
272            max-width: 1200px;
273            margin: 0 auto;
274            padding: 0 20px;
275        }
276
277        .section-title {
278            text-align: center;
279            font-size: 2.5rem;
280            margin-bottom: 3rem;
281            position: relative;
282        }
283
284        .section-title::after {
285            content: '';
286            position: absolute;
287            bottom: -10px;
288            left: 50%;
289            transform: translateX(-50%);
290            width: 80px;
291            height: 3px;
292            background: var(--secondary-color);
293            border-radius: 2px;
294        }
295
296        .about-content {
297            max-width: 800px;
298            margin: 0 auto;
299            text-align: center;
300            line-height: 2;
301            font-size: 1.1rem;
302        }
303
304        .about-content p {
305            margin-bottom: 1.5rem;
306        }
307
308        /* Artists Gallery */
309        .artists-gallery {
310            display: grid;
311            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
312            gap: 2.5rem;
313            margin-top: 3rem;
314        }
315
316        .artist-card {
317            position: relative;
318            cursor: pointer;
319            transition: var(--transition);
320            background: white;
321            border-radius: 20px;
322            overflow: hidden;
323            box-shadow: var(--shadow-light);
324        }
325
326        .artist-card:hover {
327            transform: translateY(-10px) scale(1.02);
328            box-shadow: var(--shadow-heavy);
329        }
330
331        .artist-image-wrapper {
332            position: relative;
333            width: 100%;
334            aspect-ratio: 1;
335            overflow: hidden;
336        }
337
338        .artist-image {
339            width: 100%;
340            height: 100%;
341            object-fit: cover;
342            transition: transform 0.5s ease;
343        }
344
345        .artist-card:hover .artist-image {
346            transform: scale(1.1);
347        }
348
349        .artist-overlay {
350            position: absolute;
351            bottom: 0;
352            left: 0;
353            right: 0;
354            background: linear-gradient(to top, rgba(0,0,0,0.9), transparent);
355            padding: 2rem 1.5rem 1.5rem;
356            color: white;
357        }
358
359        .artist-stage-name {
360            font-size: 1.5rem;
361            font-weight: 700;
362            margin-bottom: 0.3rem;
363        }
364
365        .artist-role-badge {
366            display: inline-block;
367            background: var(--secondary-color);
368            padding: 4px 12px;
369            border-radius: 15px;
370            font-size: 0.75rem;
371            font-weight: 600;
372            text-transform: uppercase;
373            letter-spacing: 0.5px;
374        }
375
376        .artist-real-name {
377            font-size: 0.9rem;
378            opacity: 0.8;
379            margin-top: 0.5rem;
380        }
381
382        /* Releases Grid */
383        .releases-grid {
384            display: grid;
385            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
386            gap: 2rem;
387            margin-top: 3rem;
388        }
389
390        .release-card {
391            background: white;
392            border-radius: 20px;
393            overflow: hidden;
394            box-shadow: var(--shadow-light);
395            transition: var(--transition);
396        }
397
398        .release-card:hover {
399            transform: translateY(-10px);
400            box-shadow: var(--shadow-heavy);
401        }
402
403        .release-image {
404            position: relative;
405            overflow: hidden;
406            aspect-ratio: 1;
407            background: var(--gradient-main);
408            display: flex;
409            align-items: center;
410            justify-content: center;
411            color: white;
412            font-size: 4rem;
413        }
414
415        .release-overlay {
416            position: absolute;
417            top: 0;
418            left: 0;
419            right: 0;
420            bottom: 0;
421            background: rgba(0,0,0,0.7);
422            display: flex;
423            align-items: center;
424            justify-content: center;
425            opacity: 0;
426            transition: var(--transition);
427        }
428
429        .release-card:hover .release-overlay {
430            opacity: 1;
431        }
432
433        .play-button {
434            width: 60px;
435            height: 60px;
436            border-radius: 50%;
437            background: var(--secondary-color);
438            display: flex;
439            align-items: center;
440            justify-content: center;
441            color: white;
442            font-size: 1.5rem;
443            transition: var(--transition);
444            cursor: pointer;
445        }
446
447        .play-button:hover {
448            transform: scale(1.1);
449            background: var(--terracotta);
450        }
451
452        .release-info {
453            padding: 1.5rem;
454        }
455
456        .release-title {
457            font-size: 1.3rem;
458            margin-bottom: 0.5rem;
459            color: var(--text-dark);
460        }
461
462        .release-date {
463            color: #666;
464            margin-bottom: 1rem;
465            font-size: 0.9rem;
466        }
467
468        .release-description {
469            font-size: 0.9rem;
470            color: #666;
471            margin-bottom: 1rem;
472            line-height: 1.6;
473        }
474
475        .streaming-links {
476            display: flex;
477            gap: 0.5rem;
478            flex-wrap: wrap;
479        }
480
481        .streaming-link {
482            padding: 8px 15px;
483            background: var(--primary-color);
484            color: white;
485            text-decoration: none;
486            border-radius: 20px;
487            font-size: 0.8rem;
488            font-weight: 500;
489            transition: var(--transition);
490        }
491
492        .streaming-link:hover {
493            background: var(--secondary-color);
494            transform: translateY(-2px);
495        }
496
497        /* Videos Grid */
498        .videos-grid {
499            display: grid;
500            grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
501            gap: 2rem;
502            margin-top: 3rem;
503        }
504
505        .video-card {
506            background: white;
507            border-radius: 15px;
508            overflow: hidden;
509            box-shadow: var(--shadow-light);
510            transition: var(--transition);
511        }
512
513        .video-card:hover {
514            transform: translateY(-5px);
515            box-shadow: var(--shadow-heavy);
516        }
517
518        .video-embed {
519            position: relative;
520            padding-bottom: 56.25%;
521            height: 0;
522            overflow: hidden;
523            background: var(--gradient-main);
524            display: flex;
525            align-items: center;
526            justify-content: center;
527            color: white;
528            font-size: 3rem;
529        }
530
531        .video-info {
532            padding: 1
532.5rem;
533        }
534
535        .video-type {
536            display: inline-block;
537            padding: 4px 12px;
538            background: var(--terracotta);
539            /* white on --terracotta (#E07442) is 3.13:1, below AA's 4.5:1 */
540            color: #000;
541            border-radius: 15px;
542            font-size: 0.7rem;
543            font-weight: 600;
544            text-transform: uppercase;
545            margin-bottom: 0.5rem;
546        }
547
548        .video-title {
549            font-size: 1.2rem;
550            margin-bottom: 0.5rem;
551            color: var(--text-dark);
552        }
553
554        .video-link {
555            display: inline-block;
556            margin-top: 1rem;
557            color: var(--secondary-color);
558            text-decoration: none;
559            font-weight: 600;
560            transition: var(--transition);
561        }
562
563        .video-link:hover {
564            color: var(--terracotta);
565        }
566
567        .view-all-btn {
568            text-align: center;
569            margin-top: 3rem;
570        }
571
572        .view-all-btn a {
573            display: inline-block;
574            padding: 15px 35px;
575            background: var(--secondary-color);
576            color: white;
577            text-decoration: none;
578            border-radius: 30px;
579            font-weight: 600;
580            transition: var(--transition);
581        }
582
583        .view-all-btn a:hover {
584            background: var(--terracotta);
585            transform: translateY(-3px);
586        }
587
588        /* News Grid */
589        .news-grid {
590            display: grid;
591            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
592            gap: 2rem;
593            margin-top: 3rem;
594        }
595
596        .news-card {
597            background: white;
598            border-radius: 15px;
599            overflow: hidden;
600            box-shadow: var(--shadow-light);
601            transition: var(--transition);
602        }
603
604        .news-card:hover {
605            transform: translateY(-5px);
606            box-shadow: var(--shadow-heavy);
607        }
608
609        .news-image {
610            height: 200px;
611            background: var(--gradient-main);
612            display: flex;
613            align-items: center;
614            justify-content: center;
615            color: white;
616            font-size: 2rem;
617        }
618
619        .news-content {
620            padding: 1.5rem;
621        }
622
623        .news-title {
624            font-size: 1.2rem;
625            margin-bottom: 0.5rem;
626            color: var(--text-dark);
627        }
628
629        .news-date {
630            color: #666;
631            font-size: 0.9rem;
632            margin-bottom: 1rem;
633        }
634
635        .news-excerpt {
636            color: #555;
637            line-height: 1.6;
638            margin-bottom: 1rem;
639        }
640
641        .read-more {
642            color: var(--secondary-color);
643            text-decoration: none;
644            font-weight: 600;
645            transition: var(--transition);
646        }
647
648        .read-more:hover {
649            color: var(--terracotta);
650        }
651
652        /* Bio Page */
653        .page-container {
654            display: none;
655        }
656
657        .page-container.active {
658            display: block;
659        }
660
661        .bio-page {
662            min-height: 100vh;
663            padding-top: 100px;
664            background: var(--background-light);
665        }
666
667        .bio-header {
668            background: var(--gradient-main);
669            padding: 4rem 0;
670            color: white;
671            text-align: center;
672        }
673
674        .back-button {
675            display: inline-block;
676            padding: 10px 20px;
677            background: rgba(255,255,255,0.2);
678            color: white;
679            text-decoration: none;
680            border-radius: 25px;
681            margin-bottom: 2rem;
682            transition: var(--transition);
683        }
684
685        .back-button:hover {
686            background: rgba(255,255,255,0.3);
687        }
688
689        .bio-content {
690            max-width: 900px;
691            margin: -50px auto 0;
692            position: relative;
693            z-index: 10;
694        }
695
696        .bio-card {
697            background: white;
698            border-radius: 20px;
699            overflow: hidden;
700            box-shadow: var(--shadow-heavy);
701        }
702
703        .bio-image-section {
704            padding: 3rem;
705            text-align: center;
706            background: linear-gradient(135deg, #fff5e6 0%, #ffe4b5 100%);
707        }
708
709        .bio-artist-image {
710            width: 250px;
711            height: 250px;
712            border-radius: 50%;
713            object-fit: cover;
714            border: 5px solid white;
715            box-shadow: var(--shadow-light);
716        }
717
718        .bio-text-section {
719            padding: 3rem;
720        }
721
722        .bio-artist-title {
723            text-align: center;
724            margin-bottom: 2rem;
725        }
726
727        .bio-artist-title h1 {
728            font-size: 2.5rem;
729            margin-bottom: 0.5rem;
730        }
731
732        .bio-artist-title .stage-name {
733            font-size: 1.2rem;
734            color: var(--secondary-color);
735            font-weight: 600;
736            margin-bottom: 1rem;
737        }
738
739        .bio-artist-title .role {
740            display: inline-block;
741            background: var(--terracotta);
742            color: white;
743            padding: 8px 20px;
744            border-radius: 20px;
745            font-size: 0.9rem;
746            font-weight: 600;
747        }
748
749        .bio-description {
750            line-height: 2;
751            font-size: 1.05rem;
752        }
753
754        .bio-description p {
755            margin-bottom: 1.5rem;
756        }
757
758        /* Footer */
759        .main-footer {
760            background: var(--primary-color);
761            color: var(--text-light);
762            padding: 3rem 0 1rem;
763            text-align: center;
764        }
765
766        .social-links {
767            display: flex;
768            justify-content: center;
769            gap: 1rem;
770            margin-bottom: 2rem;
771        }
772
773        .social-link {
774            width: 50px;
775            height: 50px;
776            border-radius: 50%;
777            background: var(--secondary-color);
778            color: var(--text-light);
779            display: flex;
780            align-items: center;
781            justify-content: center;
782            text-decoration: none;
783            font-size: 1.2rem;
784            transition: var(--transition);
785        }
786
787        .social-link:hover {
788            background: var(--terracotta);
789            transform: translateY(-3px);
790        }
791
792        @media (max-width: 768px) {
793            .mobile-menu-toggle {
794                display: block;
795            }
796            
797            .nav-menu {
798                position: fixed;
799                top: 70px;
800                left: 0;
801                right: 0;
802                background: var(--primary-color);
803                flex-direction: column;
804                padding: 2rem;
805                transform: translateY(-100%);
806                opacity: 0;
807                visibility: hidden;
808                transition: var(--transition);
809            }
810            
811            .nav-menu.active {
812                transform: translateY(0);
813                opacity: 1;
814                visibility: visible;
815            }
816
817            .artists-gallery {
818                grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
819                gap: 1.5rem;
820            }
821
822            .releases-grid,
823            .videos-grid,
824            .news-grid {
825                grid-template-columns: 1fr;
826                gap: 1.5rem;
827            }
828
829            .bio-artist-image {
830                width: 200px;
831                height: 200px;
832            }
833
834            .section {
835                padding: 60px 0;
836            }
837        }
838    
839    .ev-nw-badge{position:fixed;bottom:72px;right:20px;z-index:9999;display:inline-flex;align-items:center;gap:5px;padding:8px 14px;background:rgba(2,2,8,.9);border:1px solid rgba(255,255,255,.14);border-radius:100px;font-size:.68rem;font-weight:600;color:rgba(255,255,255,.55);text-decoration:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);letter-spacing:.06em;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}
840.ev-nw-badge:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(2,2,8,.97)}
841.ev-nw-badge-mark{width:14px;height:14px;display:grid;grid-template-columns:1fr 1fr;gap:2px;flex-shrink:0}
842.ev-nw-badge-mark span{background:currentColor;border-radius:2px;display:block}
843  </style>
844
845<a href="https://echovira.com" class="ev-nw-badge" target="_blank" rel="noopener" title="EchoVira Music Network">
846  <div class="ev-nw-badge-mark"><span></span><span></span><span></span><span></span></div>
847  EchoVira
848</a>
849
850<nav class="main-nav" id="mainNav">
851    <div class="nav-container">
852        <a href="#home" class="logo" data-action="back">
853            <img src="https://media.echovira.com/echovira/amanecer_logo.png" alt="Amanecer"
854                srcset="https://media.echovira.com/echovira/amanecer_logo-400.webp 400w, https://media.echovira.com/echovira/amanecer_logo-800.webp 800w, https://media.echovira.com/echovira/amanecer_logo-full.webp 1024w"
855                sizes="50px" width="1024" height="1024" decoding="async">
856        </a>
857        <ul class="nav-menu" id="navMenu">
858            <li class="lang-es"><a href="#home" data-action="back">Inicio</a></li>
859            <li class="lang-es"><a href="#about">Acerca de</a></li>
860            <li class="lang-es"><a href="#artists">Artistas</a></li>
861            <li class="lang-es"><a href="#releases">Lanzamientos</a></li>
862            <li class="lang-es"><a href="#videos">Videos</a></li>
863            <li class="lang-es"><a href="#news">Noticias</a></li>
864            
865            <li class="lang-en"><a href="#home" data-action="back">Home</a></li>
866            <li class="lang-en"><a href="#about">About</a></li>
867            <li class="lang-en"><a href="#artists">Artists</a></li>
868            <li class="lang-en"><a href="#releases">Releases</a></li>
869            <li class="lang-en"><a href="#videos">Videos</a></li>
870            <li class="lang-en"><a href="#news">News</a></li>
871        </ul>
872        <div class="lang-toggle">
873            <button onclick="window.setLanguage&&setLanguage('es')" class="lang-btn-es active" data-lang="es">Espa\xf1ol</button>
874            <button onclick="window.setLanguage&&setLanguage('en')" class="lang-btn-en" data-lang="en">English</button>
875        </div>
876        <button class="mobile-menu-toggle" id="mobileToggle">☰</button>
877    </div>
878</nav>
879
880<span id="main-content" tabindex="-1"></span>
881
882<div id="mainPage" class="page-container active">
883    <section class="hero-section" id="home">
884        
885        
886        <div class="hero-content">
887            <h1 class="hero-title">Amanecer</h1>
888            <p class="hero-subtitle lang-es">M\xfasica Espa\xf1ola Moderna | Rock Latino, Indie Pop y Fusi\xf3n Flamenca</p>
889            <p class="hero-subtitle lang-en">Modern Spanish Music | Latin Rock, Indie Pop & Flamenco Fusion</p>
890            <a href="#about" class="cta-button lang-es">Descubre Nuestra M\xfasica</a>
891            <a href="#about" class="cta-button lang-en">Discover Our Music</a>
892        </div>
893    </section>
894
895    <section class="section" id="about">
896        <div class="container">
897            <h2 class="section-title lang-es">Acerca de Amanecer</h2>
898            <h2 class="section-title lang-en">About Amanecer</h2>
899            <div class="about-content">
900                <p class="lang-es">
901                    <strong>Amanecer</strong> — m\xe1s que una banda, somos un movimiento musical que representa el nuevo amanecer de la <strong>m\xfasica espa\xf1ola contempor\xe1nea</strong>. Con ra\xedces profundas en la tradici\xf3n musical hispana y ojos puestos en el futuro global, fusionamos <strong>rock latino</strong>, <strong>indie pop espa\xf1ol</strong>, <strong>flamenco moderno</strong> y ritmos mediterr\xe1neos para crear un sonido \xfanico que trasciende fronteras. Nuestra m\xfasica es el puente entre el patrimonio cultural espa\xf1ol y las tendencias musicales internacionales, una celebraci\xf3n de nuestra identidad que resuena con audiencias de todo el mund
901o.
902                </p>
903                <p class="lang-es">
904                    Formada por 12 artistas talentosos — <strong>vocalistas apasionados</strong>, <strong>multi-instrumentistas virtuosos</strong> y <strong>compositores innovadores</strong> — Amanecer representa la diversidad y riqueza de la escena musical espa\xf1ola actual. Nos inspiramos en la <strong>guitarra flamenca</strong>, el <strong>pop espa\xf1ol de los 80</strong>, el <strong>rock progresivo latino</strong> y la <strong>m\xfasica electr\xf3nica experimental</strong> para producir canciones con <strong>producci\xf3n de calidad internacional</strong> y letras que hablan al coraz\xf3n. Cada canci\xf3n es una historia aut\xe9ntica sobre amor, pasi\xf3n, lucha, esperanza y la experiencia humana, contada con <strong>poes\xeda l\xedrica profunda</strong> y <strong>melod\xedas inolvidables</strong> que quedan grabadas en el alma. Nuestra m\xfasica es para aquellos que buscan algo m\xe1s que entretenimiento; para oyentes que sienten la m\xfasica en sus venas y conectan con cada acorde.
905                </p>
906                <p class="lang-es">
907                    Desde <strong>conciertos en vivo explosivos</strong> en Espa\xf1a, Latinoam\xe9rica y ciudades internacionales hasta el lanzamiento de <strong>\xe1lbumes digitales</strong>, <strong>sencillos</strong> y <strong>EPs</strong> en todas las <strong>plataformas de streaming</strong> principales (Spotify, Apple Music, YouTube Music, Deezer, Tidal), Amanecer est\xe1 construyendo un legado musical que honra nuestras ra\xedces mientras abraza la innovaci\xf3n. Creamos <strong>m\xfasica espa\xf1ola aut\xe9ntica</strong> con <strong>est\xe1ndares de producci\xf3n mundial</strong> que resuena tanto con <strong>hispanohablantes</strong> como con amantes de la <strong>world music</strong> interesados en los <strong>sonidos mediterr\xe1neos</strong> y la <strong>cultura hispana</strong>. Amanecer significa un nuevo d\xeda, m\xfasica sin l\xedmites, pasi\xf3n pura. \xdanete a nuestro viaje musical.
908                </p>
909                
910                <p class="lang-en">
911                    <strong>Amanecer</strong> — more than a band, we are a musical movement representing the new dawn of <strong>contemporary Spanish music</strong>. With deep roots in Hispanic musical tradition and eyes set on the global future, we fuse <strong>Latin rock</strong>, <strong>Spanish indie pop</strong>, <strong>modern flamenco</strong>, and Mediterranean rhythms to create a unique sound that transcends borders. Our music is the bridge between Spanish cultural heritage and international musical trends, a celebration of our identity that resonates with audiences worldwide.
912                </p>
913                <p class="lang-en">
914                    Formed by 12 talented artists — <strong>passionate vocalists</strong>, <strong>virtuoso multi-instrumentalists</strong>, and <strong>innovative composers</strong> — Amanecer represents the diversity and richness of today's Spanish music scene. We draw inspiration from <strong>flamenco guitar</strong>, <strong>80s Spanish pop</strong>, <strong>Latin progressive rock</strong>, and <strong>experimental electronic music</strong> to produce songs with <strong>international-quality production</strong> and lyrics that speak to the heart. Every song is an authentic story about love, passion, struggle, hope, and the human experience, told with <strong>deep lyrical poetry</strong> and <strong>unforgettable melodies</strong> that stay with you forever. Our music is for those seeking more than entertainment; for listeners who feel music in their veins and connect with every chord.
915                </p>
916                <p class="lang-en">
917                    From <strong>explosive live concerts</strong> in Spain, Latin America, and international cities to releasing <strong>digital albums</strong>, <strong>singles</strong>, and <strong>EPs</strong> on all major <strong>streaming platforms</strong> (Spotify, Apple Music, YouTube Music, Deezer, Tidal), Amanecer is building a musical legacy that honors our roots while embracing innovation. We create <strong>authentic Spanish music</strong> with <strong>world-class production standards</strong> that resonates with both <strong>Spanish speakers</strong> and <strong>world music</strong> lovers interested in <strong>Mediterranean sounds</strong> and <strong>Hispanic culture</strong>. Amanecer means a new day, music without limits, pure passion. Join our musical journey.
918                </p>
919            </div>
920        </div>
921    </section>
922
923    <section class="section" id="artists">
924        <div class="container">
925            <h2 class="section-title lang-es">Los Artistas</h2>
926            <h2 class="section-title lang-en">The Artists</h2>
927            <div class="artists-gallery" id="artistsGallery">
928<div class="artist-card" data-artist-id="andres-navarro" style="cursor:pointer">
929            <div class="artist-image-wrapper">
930                <img src="https://media.echovira.com/amanecer/amanecer_andres_navarro_male_singer_portrait_0.png" alt="Andres Navarro" class="artist-image"
931                srcset="https://media.echovira.com/amanecer/amanecer_andres_navarro_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_andres_navarro_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_andres_navarro_male_singer_portrait_0-full.
931webp 1024w"
932                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
933                <div class="artist-overlay">
934                    <div class="artist-stage-name">Andres</div>
935                    <div class="artist-role-badge lang-es">Cantante</div>
936                    <div class="artist-role-badge lang-en">Male Singer</div>
937                    <div class="artist-real-name">Andres Navarro</div>
938                </div>
939            </div>
940        </div><div class="artist-card" data-artist-id="camila-torres" style="cursor:pointer">
941            <div class="artist-image-wrapper">
942                <img src="https://media.echovira.com/amanecer/amanecer_camila_torres_female_singer_portrait_0.png" alt="Camila Torres" class="artist-image"
943                srcset="https://media.echovira.com/amanecer/amanecer_camila_torres_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_camila_torres_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_camila_torres_female_singer_portrait_0-full.webp 1024w"
944                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
945                <div class="artist-overlay">
946                    <div class="artist-stage-name">Camila</div>
947                    <div class="artist-role-badge lang-es">Cantante</div>
948                    <div class="artist-role-badge lang-en">Female Singer</div>
949                    <div class="artist-real-name">Camila Torres</div>
950                </div>
951            </div>
952        </div><div class="artist-card" data-artist-id="carlos-herrera" style="cursor:pointer">
953            <div class="artist-image-wrapper">
954                <img src="https://media.echovira.com/amanecer/amanecer_carlos_herrera_male_singer_portrait_0.png" alt="Carlos Herrera" class="artist-image"
955                srcset="https://media.echovira.com/amanecer/amanecer_carlos_herrera_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_carlos_herrera_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_carlos_herrera_male_singer_portrait_0-full.webp 1024w"
956                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
957                <div class="artist-overlay">
958                    <div class="artist-stage-name">Carlos</div>
959                    <div class="artist-role-badge lang-es">Cantante</div>
960                    <div class="artist-role-badge lang-en">Male Singer</div>
961                    <div class="artist-real-name">Carlos Herrera</div>
962                </div>
963            </div>
964        </div><div class="artist-card" data-artist-id="diego-alvarez" style="cursor:pointer">
965            <div class="artist-image-wrapper">
966                <img src="https://media.echovira.com/amanecer/amanecer_diego_alvarez_male_singer_portrait_0.png" alt="Diego Alvarez" class="artist-image"
967                srcset="https://media.echovira.com/amanecer/amanecer_diego_alvarez_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_diego_alvarez_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_diego_alvarez_male_singer_portrait_0-full.webp 1024w"
968                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
969                <div class="artist-overlay">
970                    <div class="artist-stage-name">Diego</div>
971                    <div class="artist-role-badge lang-es">Cantante</div>
972                    <div class="artist-role-badge lang-en">Male Singer</div>
973                    <div class="artist-real-name">Diego Alvarez</div>
974                </div>
975            </div>
976        </div><div class="artist-card" data-artist-id="elena-castillo" style="cursor:pointer">
977            <div class="artist-image-wrapper">
978                <img src="https://media.echovira.com/amanecer/amanecer_elena_castillo_female_singer_portrait_0.png" alt="Elena Castillo" class="artist-image"
979                srcset="https://media.echovira.com/amanecer/amanecer_elena_castillo_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_elena_castillo_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_elena_castillo_female_singer_portrait_0-full.
979webp 1024w"
980                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
981                <div class="artist-overlay">
982                    <div class="artist-stage-name">Elena</div>
983                    <div class="artist-role-badge lang-es">Cantante</div>
984                    <div class="artist-role-badge lang-en">Female Singer</div>
985                    <div class="artist-real-name">Elena Castillo</div>
986                </div>
987            </div>
988        </div><div class="artist-card" data-artist-id="isabella-vega" style="cursor:pointer">
989            <div class="artist-image-wrapper">
990                <img src="https://media.echovira.com/amanecer/amanecer_isabella_vega_female_singer_portrait_1.png" alt="Isabella Vega" class="artist-image"
991                srcset="https://media.echovira.com/amanecer/amanecer_isabella_vega_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/amanecer/amanecer_isabella_vega_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/amanecer/amanecer_isabella_vega_female_singer_portrait_1-full.webp 1024w"
992                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
993                <div class="artist-overlay">
994                    <div class="artist-stage-name">Isabella</div>
995                    <div class="artist-role-badge lang-es">Cantante</div>
996                    <div class="artist-role-badge lang-en">Female Singer</div>
997                    <div class="artist-real-name">Isabella Vega</div>
998                </div>
999            </div>
1000        </div><div class="artist-card" data-artist-id="javier-cruz" style="cursor:pointer">
1001            <div class="artist-image-wrapper">
1002                <img src="https://media.echovira.com/amanecer/amanecer_javier_cruz_male_singer_portrait_0.png" alt="Javier Cruz" class="artist-image"
1003                srcset="https://media.echovira.com/amanecer/amanecer_javier_cruz_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_javier_cruz_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_javier_cruz_male_singer_portrait_0-full.webp 1024w"
1004                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
1005                <div class="artist-overlay">
1006                    <div class="artist-stage-name">Javi</div>
1007                    <div class="artist-role-badge lang-es">Cantante</div>
1008                    <div class="artist-role-badge lang-en">Male Singer</div>
1009                    <div class="artist-real-name">Javier Cruz</div>
1010                </div>
1011            </div>
1012        </div><div class="artist-card" data-artist-id="lucia-morales" style="cursor:pointer">
1013            <div class="artist-image-wrapper">
1014                <img src="https://media.echovira.com/amanecer/amanecer_lucia_morales_female_singer_portrait_1.png" alt="Lucia Morales" class="artist-image"
1015                srcset="https://media.echovira.com/amanecer/amanecer_lucia_morales_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/amanecer/amanecer_lucia_morales_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/amanecer/amanecer_lucia_morales_female_singer_portrait_1-full.webp 1024w"
1016                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
1017                <div class="artist-overlay">
1018                    <div class="artist-stage-name">Lucia</div>
1019                    <div class="artist-role-badge lang-es">Cantante</div>
1020                    <div class="artist-role-badge lang-en">Female Singer</div>
1021                    <div class="artist-real-name">Lucia Morales</div>
1022                </div>
1023            </div>
1024        </div><div class="artist-card" data-artist-id="marina-lopez" style="cursor:pointer">
1025            <div class="artist-image-wrapper">
1026                <img src="https://media.echovira.com/amanecer/amanecer_marina_lopez_multi_instrumentalist_portrait_1.png" alt="Marina Lopez" class="artist-image"
1027                srcset="https://media.echovira.com/amanecer/amanecer_marina_lopez_multi_instrumentalist_portrait_1-400.webp 400w, https://media.echovira.com/amanecer/amanecer_marina_lopez_multi_instrumentalist_portrait_1-800.webp 800w, https://media.echovira.com/amanecer/amanecer_marina_lopez_multi_instrumentalist_portrait_1-full.
1027webp 1024w"
1028                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
1029                <div class="artist-overlay">
1030                    <div class="artist-stage-name">Marina</div>
1031                    <div class="artist-role-badge lang-es">Multi-instrumentista</div>
1032                    <div class="artist-role-badge lang-en">Multi-Instrumentalist</div>
1033                    <div class="artist-real-name">Marina Lopez</div>
1034                </div>
1035            </div>
1036        </div><div class="artist-card" data-artist-id="mateo-ramos" style="cursor:pointer">
1037            <div class="artist-image-wrapper">
1038                <img src="https://media.echovira.com/amanecer/amanecer_mateo_ramos_male_singer_portrait_0.png" alt="Mateo Ramos" class="artist-image"
1039                srcset="https://media.echovira.com/amanecer/amanecer_mateo_ramos_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_mateo_ramos_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_mateo_ramos_male_singer_portrait_0-full.webp 1024w"
1040                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
1041                <div class="artist-overlay">
1042                    <div class="artist-stage-name">Mateo</div>
1043                    <div class="artist-role-badge lang-es">Cantante</div>
1044                    <div class="artist-role-badge lang-en">Male Singer</div>
1045                    <div class="artist-real-name">Mateo Ramos</div>
1046                </div>
1047            </div>
1048        </div><div class="artist-card" data-artist-id="sofia-delgado" style="cursor:pointer">
1049            <div class="artist-image-wrapper">
1050                <img src="https://media.echovira.com/amanecer/amanecer_sofia_delgado_female_singer_portrait_0.png" alt="Sofia Delgado" class="artist-image"
1051                srcset="https://media.echovira.com/amanecer/amanecer_sofia_delgado_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_sofia_delgado_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_sofia_delgado_female_singer_portrait_0-full.webp 1024w"
1052                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
1053                <div class="artist-overlay">
1054                    <div class="artist-stage-name">Sofia</div>
1055                    <div class="artist-role-badge lang-es">Cantante</div>
1056                    <div class="artist-role-badge lang-en">Female Singer</div>
1057                    <div class="artist-real-name">Sofia Delgado</div>
1058                </div>
1059            </div>
1060        </div><div class="artist-card" data-artist-id="valeria-dominguez" style="cursor:pointer">
1061            <div class="artist-image-wrapper">
1062                <img src="https://media.echovira.com/amanecer/amanecer_valeria_dominguez_composer_lyricist_portrait_0.png" alt="Valeria Dominguez" class="artist-image"
1063                srcset="https://media.echovira.com/amanecer/amanecer_valeria_dominguez_composer_lyricist_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_valeria_dominguez_composer_lyricist_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_valeria_dominguez_composer_lyricist_portrait_0-full.webp 1024w"
1064                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
1065                <div class="artist-overlay">
1066                    <div class="artist-stage-name">Valeria</div>
1067                    <div class="artist-role-badge lang-es">Compositora y Letrista</div>
1068                    <div class="artist-role-badge lang-en">Composer & Lyricist</div>
1069                    <div class="artist-real-name">Valeria Dominguez</div>
1070                </div>
1071            </div>
1072        </div>
1073</div>
1074        </div>
1075    </section>
1076
1077    <section class="section section-dark" id="releases">
1078        <div class="container">
1079            <h2 class="section-title lang-es">\xdaltimos Lanzamientos</h2>
1080            <h2 class="section-title lang-en">Latest Releases</h2>
1081            <div class="releases-grid">
1082                <div class="release-card">
1083                    <div class="release-image">
1084                        🎵
1085                        <div class="release-overlay">
1086                            <div class="play-button">▶</div>
1087                        </div>
1088                    </div>
1089                    <div class="release-info">
1090                        <h3 class="release-title lang-es">Nuevo Sencillo</h3>
1091                        <h3 class="release-title lang-en">New Single</h3>
1092                        <p class="release-date lang-es">1 de diciembre, 2024</p>
1093                        <p class="release-date lang-en">December 1, 2024</p>
1094                        <p class="release-description lang-es">Nuestra \xfaltima canci\xf3n fusiona rock latino con melod\xedas flamencas modernas</p>
1095                        <p class="release-description lang-en">Our latest song fuses Latin rock with modern flamenco melodies</p>
1096                        <div class="streaming-links">
1097                            <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="streaming-link">YouTube</a>
1098                            <a href="https://open.spotify.com/artist/4MWijAHWmVep71ywZ3d1NP" target="_blank" class="streaming-link">Spotify</a>
1099                            <a href="https://music.apple.com/us/artist/amanecer/1848197990" target="_blank" class="streaming-link">Apple Music</a>
1100                        </div>
1101                    </div>
1102                </div>
1103
1104                <div class="release-card">
1105                    <div class="release-image">
1106                        🎼
1107                        <div class="release-overlay">
1108                            <div class="play-button">▶</div>
1109                        </div>
1110                    </div>
1111                    <div class="release-info">
1112                        <h3 class="release-title lang-es">Nuevo \xc1lbum</h3>
1113                        <h3 class="release-title lang-en">New Album</h3>
1114                        <p class="release-date lang-es">15 de octubre, 2024</p>
1115                        <p class="release-date lang-en">October 15, 2024</p>
1116                        <p class="release-description lang-es">Una colecci\xf3n de canciones apasionadas con poes\xeda l\xedrica profunda</p>
1117                        <p class="release-description lang-en">A collection of passionate songs with deep lyrical poetry</p>
1118                        <div class="streaming-links">
1119                            <a href="https://open.spotify.com/artist/4MWijAHWmVep71ywZ3d1NP" target="_blank" class="streaming-link">Spotify</a>
1120                            <a href="https://music.apple.com/us/artist/amanecer/1848197990" target="_blank" class="streaming-link">Apple Music</a>
1121                            <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="streaming-link">YouTube</a>
1122                        </div>
1123                    </div>
1124                </div>
1125
1126                <div class="release-card">
1127                    <div class="release-image">
1128                        ⚡
1129                        <div class="release-overlay">
1130                            <div class="play-button">▶</div>
1131                        </div>
1132                    </div>
1133                    <div class="release-info">
1134                        <h3 class="release-title lang-es">EP Nuevo</h3>
1135                        <h3 class="release-title lang-en">New EP</h3>
1136                        <p class="release-date lang-es">20 de agosto, 2024</p>
1137                        <p class="release-date lang-en">August 20, 2024</p>
1138                        <p class="release-description lang-es">Cuatro pistas de alta energ\xeda con estilo indie pop espa\xf1ol</p>
1139                        <p class="release-description lang-en">Four high-energy tracks in Spanish indie pop style</p>
1140                        <div class="streaming-links">
1141                            <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="streaming-link">YouTube</a>
1142                            <a href="https://open.spotify.com/artist/4MWijAHWmVep71ywZ3d1NP" target="_blank" class="streaming-link">Spotify</a>
1143                            <a href="https://music.apple.com/us/artist/amanecer/1848197990" target="_blank" class="streaming-link">Apple Music</a>
1144                        </div>
1145                    </div>
1146                </div>
1147            </div>
1148        </div>
1149    </section>
1150
1151    <section class="section" id="videos">
1152        <div class="container">
1153            <h2 class="section-title lang-es">\xdaltimos Videos</h2>
1154            <h2 class="section-title lang-en">Latest Videos</h2>
1155            <div class="videos-grid">
1156                <div class="video-card">
1157                    <div class="video-embed">
1158                        📹
1159                    </div>
1160                    <div class="video-info">
1161                        <span class="video-type lang-es">Video Musical</span>
1162                        <span class="video-type lang-en">Music Video</span>
1163                        <h3 class="video-title lang-es">Video Oficial</h3>
1164                        <h3 class="video-title lang-en">Official Music Video</h3>
1165                        <p class="lang-es">Nuestro \xfaltimo video musical con im\xe1genes cinematogr\xe1ficas y emotivas</p>
1166                        <p class="lang-en">Our latest music video with cinematic and emotional visuals</p>
1167                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="video-link lang-es">Ver en YouTube →</a>
1168                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="video-link lang-en">Watch on YouTube →</a>
1169                    </div>
1170                </div>
1171
1172                <div class="video-card">
1173                    <div class="video-embed">
1174                        🎬
1175                    </div>
1176                    <div class="video-info">
1177                        <span class="video-type lang-es">Detr\xe1s de C\xe1maras</span>
1178                        <span class="video-type lang-en">Behind the Scenes</span>
1179                        <h3 class="video-title lang-es">Estudio Detr\xe1s de C\xe1maras</h3>
1180                        <h3 class="video-title lang-en">Studio Behind the Scenes</h3>
1181                        <p class="lang-es">Una mirada al proceso creativo y producci\xf3n de las canciones de Amanecer</p>
1182                        <p class="lang-en">A look at the creative process and production of Amanecer's songs</p>
1183                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="video-link lang-es">Ver en YouTube →</a>
1184                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="video-link lang-en">Watch on YouTube →</a>
1185                    </div>
1186                </div>
1187            </div>
1188            <div class="view-all-btn">
1189                <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="lang-es">Ver Todos los Videos en YouTube</a>
1190                <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="lang-en">View All Videos on YouTube</a>
1191            </div>
1192        </div>
1193    </section>
1194
1195    <section class="section section-dark" id="news">
1196        <div class="container">
1197            <h2 class="section-title lang-es">\xdaltimas Noticias</h2>
1198            <h2 class="section-title lang-en">Latest News</h2>
1199            <div class="news-grid">
1200                <div class="news-card">
1201                    <div class="news-image">
1202                        📰
1203                    </div>
1204                    <div class="news-content">
1205                        <h3 class="news-title lang-es">Nuevo Sencillo Rompe R\xe9cords</h3>
1206                        <h3 class="news-title lang-en">New Single Breaks Records</h3>
1207                        <p class="news-date lang-es">5 de diciembre, 2024</p>
1208                        <p class="news-date lang-en">December 5, 2024</p>
1209                        <p class="news-excerpt lang-es">Nuestra \xfaltima canci\xf3n super\xf3 100,000 streams en su primera semana. Gracias por el apoyo incre\xedble...</p>
1210                        <p class="news-excerpt lang-en">Our latest song surpassed 100K streams in its first week. Thank you for the incredible support...</p>
1211                        <a href="#" class="read-more lang-es">Leer M\xe1s</a>
1212                        <a href="#" class="read-more lang-en">Read More</a>
1213                    </div>
1214                </div>
1215
1216                <div class="news-card">
1217                    <div class="news-image">
1218                        🎪
1219                    </div>
1220                    <div class="news-content">
1221                        <h3 class="news-title lang-es">Fechas de Gira 2025 Anunciadas</h3>
1222                        <h3 class="news-title lang-en">2025 Tour Dates Announced</h3>
1223                        <p class="news-date lang-es">20 de noviembre, 2024</p>
1224                        <p class="news-date lang-en">November 20, 2024</p>
1225                        <p class="news-excerpt lang-es">Pr\xf3ximos conciertos de Amanecer en varias ciudades. Preventa de boletos disponible ahora...</p>
1226                        <p class="news-excerpt lang-en">Amanecer's upcoming concerts in various cities. Presale tickets available now...</p>
1227                        <a href="#" class="read-more lang-es">Leer M\xe1s</a>
1228                        <a href="#" class="read-more lang-en">Read More</a>
1229                    </div>
1230                </div>
1231
1232                <div class="news-card">
1233                    <div class="news-image">
1234                        🎙️
1235                    </div>
1236                    <div class="news-content">
1237                        <h3 class="news-title lang-es">Serie de Diario de Estudio Lanzada</h3>
1238                        <h3 class="news-title lang-en">
1238Studio Diary Series Launches</h3>
1239                        <p class="news-date lang-es">28 de octubre, 2024</p>
1240                        <p class="news-date lang-en">October 28, 2024</p>
1241                        <p class="news-excerpt lang-es">Sigue el proceso de creaci\xf3n de nuestro nuevo \xe1lbum. Nuevos episodios cada martes en YouTube...</p>
1242                        <p class="news-excerpt lang-en">Follow the making of our new album. New episodes every Tuesday on YouTube...</p>
1243                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="read-more lang-es">Ver Ahora</a>
1244                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="read-more lang-en">Watch Now</a>
1245                    </div>
1246                </div>
1247            </div>
1248        </div>
1249    </section>
1250
1251    <footer class="main-footer">
1252        <div class="container">
1253            <div class="social-links">
1254                <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="social-link">📺</a>
1255                <a href="https://www.instagram.com/amanecermusicband/" target="_blank" class="social-link">📷</a>
1256                <a href="https://www.tiktok.com/@amanecerofficial" target="_blank" class="social-link">🎵</a>
1257                <a href="https://facebook.com/AmanecerMusicBand" target="_blank" class="social-link">👥</a>
1258            </div>
1259            <p class="lang-es">&copy; 2025 Amanecer. Todos los derechos reservados.</p>
1260            <p class="lang-en">&copy; 2025 Amanecer. All rights reserved.</p>
1261        </div>
1262    </footer>
1263</div>
1264
1265<div id="bioPages">
1266<div id="bio-andres-navarro" class="page-container bio-page">
1267            <div class="bio-header">
1268                <div class="container">
1269                    <a href="#artists" data-action="back" class="back-button lang-es">← Volver a Artistas</a>
1270                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
1271                </div>
1272            </div>
1273            
1274            <div class="bio-content">
1275                <div class="container">
1276                    <div class="bio-card">
1277                        <div class="bio-image-section">
1278                            <img src="https://media.echovira.com/amanecer/amanecer_andres_navarro_male_singer_portrait_0.png" alt="Andres Navarro" class="bio-artist-image"
1279                srcset="https://media.echovira.com/amanecer/amanecer_andres_navarro_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_andres_navarro_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_andres_navarro_male_singer_portrait_0-full.webp 1024w"
1280                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
1281                        </div>
1282                        <div class="bio-text-section">
1283                            <div class="bio-artist-title">
1284                                <h1>Andres Navarro</h1>
1285                                <div class="stage-name">"Andres" • 26 a\xf1os</div>
1286                                <div class="role lang-es">Cantante</div>
1287                                <div class="role lang-en">Male Singer</div>
1288                            </div>
1289                            <div class="bio-description lang-es">
1290                                <p>Andres Navarro (Andres), 26 a\xf1os, el cantante principal y frontman ardiente de Amanecer cuya voz enciende cada canci\xf3n con fuego y pasi\xf3n. Su tenor crudo y conmovedor corta con potencia y emoci\xf3n, movi\xe9ndose desde susurros \xedntimos hasta coros explosivos de m\xe1xima intensidad. Como l\xedder vocal de Amanecer, Andres da forma al sonido de la banda, fusionando la energ\xeda \xe1spera del rock con la calidez latina para crear algo verdaderamente \xfanico y vivo. En el escenario, Andres trae intensidad magn\xe9tica y carisma natural, convirtiendo cada show en un momento inolvidable que permanece contigo mucho despu\xe9s de que termine la m\xfasica. Su timbre es c\xe1lido con un borde \xe1spero, c\xf3modo en registros medios y altos, favoreciendo el fraseo preciso, cambios din\xe1micos amplios y gui\xf1os estil\xedsticos tanto al rock cl\xe1sico como moderno que dan peso emocional a cada canci\xf3n. La presencia enfocada de Andres estrecha la qu\xedmica del grupo en el escenario y empuja los arreglos hacia momentos de alto impacto que definen la experiencia en vivo de Amanecer. Como vocalista l\xedder, sus elecciones de fraseo e intensidad dan forma a la paleta s\xf3nica de la banda y alimentan el impulso del show en vivo, convirtiendo versos tranquilos en crescendos poderosos. No podemos esperar a que escuches las nuevas pistas que ponen su voz al frente y centro del sonido de Amanecer.</p>
1291                            </div>
1292                            <div class="bio-description lang-en">
1293                                <p>Meet Andres Navarro (stage name: Andres), 26, the fiery frontman and lead male singer of Amanecer whose voice ignites every song with fire and passion. His raw, soulful tenor cuts through with power and emotion, moving from intimate whispers to full-throttle explosive choruses. As Amanecer's lead vocalist, Andres shapes the band's sound, fusing gritty rock energy with Latin warmth to create something uniquely alive and authentic. On stage, Andres brings magnetic intensity and natural charisma, turning every show into an unforgettable moment that stays with you long after the music ends. His timbre is warm with a gritty edge, comfortable across mid and upper registers, favoring precise phrasing, wide dynamic shifts, and stylistic no
1293ds to both classic and modern rock that give emotional weight to every song. Andres's focused presence tightens the group's onstage chemistry and pushes arrangements toward high-impact moments that define Amanecer's live experience. As lead vocalist, his phrasing and intensity choices shape the band's sonic palette and fuel the live show's momentum, turning quiet verses into powerful crescendos. We can't wait for you to hear the new tracks that put his vocals front and center in Amanecer's sound.</p>
1294                            </div>
1295                        </div>
1296                    </div>
1297                </div>
1298            </div>
1299            
1300            <footer class="main-footer">
1301                <div class="container">
1302                    <div class="social-links">
1303                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="social-link">📺</a>
1304                        <a href="https://www.instagram.com/amanecermusicband/" target="_blank" class="social-link">📷</a>
1305                        <a href="https://www.tiktok.com/@amanecerofficial" target="_blank" class="social-link">🎵</a>
1306                        <a href="https://facebook.com/AmanecerMusicBand" target="_blank" class="social-link">👥</a>
1307                    </div>
1308                    <p class="lang-es">&copy; 2025 Amanecer. Todos los derechos reservados.</p>
1309                    <p class="lang-en">&copy; 2025 Amanecer. All rights reserved.</p>
1310                </div>
1311            </footer>
1312        </div>
1313<div id="bio-camila-torres" class="page-container bio-page">
1314            <div class="bio-header">
1315                <div class="container">
1316                    <a href="#artists" data-action="back" class="back-button lang-es">← Volver a Artistas</a>
1317                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
1318                </div>
1319            </div>
1320            
1321            <div class="bio-content">
1322                <div class="container">
1323                    <div class="bio-card">
1324                        <div class="bio-image-section">
1325                            <img src="https://media.echovira.com/amanecer/amanecer_camila_torres_female_singer_portrait_0.png" alt="Camila Torres" class="bio-artist-image"
1326                srcset="https://media.echovira.com/amanecer/amanecer_camila_torres_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_camila_torres_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_camila_torres_female_singer_portrait_0-full.webp 1024w"
1327                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
1328                        </div>
1329                        <div class="bio-text-section">
1330                            <div class="bio-artist-title">
1331                                <h1>Camila Torres</h1>
1332                                <div class="stage-name">"Camila" • 23 a\xf1os</div>
1333                                <div class="role lang-es">Cantante</div>
1334                                <div class="role lang-en">Female Singer</div>
1335                            </div>
1336                            <div class="bio-description lang-es">
1337                                <p>Conoce a Camila Torres (Camila), 23 a\xf1os, la nueva voz femenina de Amanecer que trae calidez y emoci\xf3n profunda a cada nota. Su encanto c\xe1lido y cercano combinado con voces profundamente emotivas da al grupo un sello \xedntimo y poderoso que resuena en el coraz\xf3n de cada oyente. Canta con un timbre rico y resonante, un rango flexible que abarca desde tonos bajos c\xe1lidos hasta agudos brillantes, fraseo expresivo y control din\xe1mico cuidadoso, inspir\xe1ndose en influencias folk y pop que dan autenticidad a cada l\xednea. En grabaciones y en vivo, Camila da forma al sonido de Amanecer hacia armon\xedas m\xe1s c\xe1lidas y un enfoque mel\xf3dico m\xe1s claro, mientras su presencia en el escenario fortalece el groove de la banda y eleva la energ\xeda de la multitud con momentos de conexi\xf3n genuina. Su voz transforma narrativas introspectivas en momentos de liberaci\xf3n emocional, aportando tanto suavidad como fuerza a cada coro y verso. La energ\xeda esc\xe9nica de Camila y su dominio s
1337obre las melod\xedas han hecho que su voz otorgue una identidad nueva a la textura vocal de Amanecer, haciendo que las piezas del grupo sean m\xe1s profundas, brillantes y emocionalmente resonantes.</p>
1338                            </div>
1339                            <div class="bio-description lang-en">
1340                                <p>Meet Camila Torres (stage name: Camila), 23, the new female voice of Amanecer bringing warmth and deep emotion to every note. Her warm, approachable charm combined with deeply emotional vocals gives the group an intimate yet powerful signature that resonates in every listener's heart. She sings with a rich, resonant timbre, a flexible range spanning from warm low tones to bright highs, expressive phrasing and careful dynamic control, drawing on folk and pop influences that bring authenticity to every line. On record and live, Camila shapes Amanecer's sound toward warmer harmonies and clearer melodic focus, while her stage presence tightens the band's groove and lifts the crowd's energy with moments of genuine connection. Her voice transforms introspective narratives into moments of emotional release, bringing both softness and strength to every chorus and verse. Camila's stage energy and mastery over melodies have made her voice grant a new identity to Amanecer's vocal texture, making the group's pieces deeper, brighter and emotionally resonant.</p>
1341                            </div>
1342                        </div>
1343                    </div>
1344                </div>
1345            </div>
1346            
1347            <footer class="main-footer">
1348                <div class="container">
1349                    <div class="social-links">
1350                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="social-link">📺</a>
1351                        <a href="https://www.instagram.com/amanecermusicband/" target="_blank" class="social-link">📷</a>
1352                        <a href="https://www.tiktok.com/@amanecerofficial" target="_blank" class="social-link">🎵</a>
1353                        <a href="https://facebook.com/AmanecerMusicBand" target="_blank" class="social-link">👥</a>
1354                    </div>
1355                    <p class="lang-es">&copy; 2025 Amanecer. Todos los derechos reservados.</p>
1356                    <p class="lang-en">&copy; 2025 Amanecer. All rights reserved.</p>
1357                </div>
1358            </footer>
1359        </div>
1360<div id="bio-carlos-herrera" class="page-container bio-page">
1361            <div class="bio-header">
1362                <div class="container">
1363                    <a href="#artists" data-action="back" class="back-button lang-es">← Volver a Artistas</a>
1364                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
1365                </div>
1366            </div>
1367            
1368            <div class="bio-content">
1369                <div class="container">
1370                    <div class="bio-card">
1371                        <div class="bio-image-section">
1372                            <img src="https://media.echovira.com/amanecer/amanecer_carlos_herrera_male_singer_portrait_0.png" alt="Carlos Herrera" class="bio-artist-image"
1373                srcset="https://media.echovira.com/amanecer/amanecer_carlos_herrera_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_carlos_herrera_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_carlos_herrera_male_singer_portrait_0-full.webp 1024w"
1374                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
1375                        </div>
1376                        <div class="bio-text-section">
1377                            <div class="bio-artist-title">
1378                                <h1>Carlos Herrera</h1>
1379                                <div class="stage-name">"Carlos" • 24 a\xf1os</div>
1380                                <div class="role lang-es">Cantante</div>
1381                                <div class="role lang-en">Male Singer</div>
1382                            </div>
1383                            <div class="bio-description lang-es">
1384                                <p>Conoce a Carlos Herrera (Carlos), 24 a\xf1os, el cantante vers\xe1til de Amanecer con falsettos suaves y estilo moderno que eleva cada melod\xeda. Su energ\xeda vocal y t\xe9cnica impecable dan al sonido de Amanecer una chispa fresca y emotiva que transforma cada arreglo. Su timbre c\xe1lido y rango flexible se mueven desde tonos bajos \xedntimos hasta falsetes aireados y et\xe9reos, con fraseo preciso y control din\xe1mico que dan emoci\xf3n genuina a cada l\xednea, inspir\xe1ndose en soul e indie-pop contempor\xe1neo. Como voz principal de Amanecer, las elecciones de Carlos en fraseo e intensidad dan forma a la paleta s\xf3nica de la banda y alimentan el impulso del show en vivo, creando contrastes din\xe1micos entre versos \xedntimos y coros expansivos. Sus transiciones fluidas entre registros vocales y su habilidad para navegar cambios de g\xe9nero hacen que cada canci\xf3n sienta como un viaje emocional completo. En el escenario, Carlos combina t\xe9cnica vocal refinada con conexi\xf3n emocional aut\xe9ntica, convirtiendo arreglos complejos en momentos accesibles que resuenan profundamente con la audiencia.</p>
1385                            </div>
1386                            <div class="bio-description lang-en">
1387                                <p>Meet Carlos Herrera (stage name: Carlos), 24, Amanecer's versatile male singer with smooth falsettos and modern style that elevates every melody. His vocal energy and impeccable technique give Amanecer's sound a fresh, emotive spark that transforms every arrangement. His warm timbre and flexible range move from intimate low tone
1387s to airy, ethereal falsetto, with precise phrasing and dynamic control that bring genuine emotion to every line, drawing on soul and contemporary indie-pop influences. As Amanecer's lead voice, Carlos's phrasing and intensity choices shape the band's sonic palette and fuel the live show's momentum, creating dynamic contrasts between intimate verses and expansive choruses. His fluid transitions between vocal registers and ability to navigate genre shifts make every song feel like a complete emotional journey. On stage, Carlos combines refined vocal technique with authentic emotional connection, turning complex arrangements into accessible moments that resonate deeply with the audience.</p>
1388                            </div>
1389                        </div>
1390                    </div>
1391                </div>
1392            </div>
1393            
1394            <footer class="main-footer">
1395                <div class="container">
1396                    <div class="social-links">
1397                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="social-link">📺</a>
1398                        <a href="https://www.instagram.com/amanecermusicband/" target="_blank" class="social-link">📷</a>
1399                        <a href="https://www.tiktok.com/@amanecerofficial" target="_blank" class="social-link">🎵</a>
1400                        <a href="https://facebook.com/AmanecerMusicBand" target="_blank" class="social-link">👥</a>
1401                    </div>
1402                    <p class="lang-es">&copy; 2025 Amanecer. Todos los derechos reservados.</p>
1403                    <p class="lang-en">&copy; 2025 Amanecer. All rights reserved.</p>
1404                </div>
1405            </footer>
1406        </div>
1407<div id="bio-diego-alvarez" class="page-container bio-page">
1408            <div class="bio-header">
1409                <div class="container">
1410                    <a href="#artists" data-action="back" class="back-button lang-es">← Volver a Artistas</a>
1411                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
1412                </div>
1413            </div>
1414            
1415            <div class="bio-content">
1416                <div class="container">
1417                    <div class="bio-card">
1418                        <div class="bio-image-section">
1419                            <img src="https://media.echovira.com/amanecer/amanecer_diego_alvarez_male_singer_portrait_0.png" alt="Diego Alvarez" class="bio-artist-image"
1420                srcset="https://media.echovira.com/amanecer/amanecer_diego_alvarez_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_diego_alvarez_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_diego_alvarez_male_singer_portrait_0-full.webp 1024w"
1421                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
1422                        </div>
1423                        <div class="bio-text-section">
1424                            <div class="bio-artist-title">
1425                                <h1>Diego Alvarez</h1>
1426                                <div class="stage-name">"Diego" • 25 a\xf1os</div>
1427                                <div class="role lang-es">Cantante</div>
1428                                <div class="role lang-en">Male Singer</div>
1429                            </div>
1430                            <div class="bio-description lang-es">
1431                                <p>Conoce a Diego \xc1lvarez (Diego), nuestro frontman de Amanecer de 25 a\xf1os con voz apasionada y presencia carism\xe1tica magn\xe9tica. Su timbre c\xe1lido con inclinaci\xf3n a tenor, rango din\xe1mico amplio y fraseo preciso le permiten moverse desde versos \xedntimos hasta coros a toda potencia, inspir\xe1ndose en rock, folk latino y soul que dan profundidad emocional aut\xe9ntica. En el escenario, su fraseo y din\xe1micas controladas gu\xedan los arreglos, convirtiendo momentos tranquilos en cl\xedmax poderosos que definen la energ\xeda explosiva del grupo. Diego da forma a la identidad s\xf3nica de Amanecer y al impulso en vivo con cada nota, anclando melod\xedas y conduciendo la atm\xf3sfera de los conciertos con intensidad que electrifica a la multitud. Su entrega vocal combina t\xe9cnica refinada con pasi\xf3n cruda, creando interpretaciones que sienten tanto pulidas como visceralmente honestas. La capacidad de Diego para conectar emocionalmente con letras y audiencias por igual lo convierte en el coraz\xf3n palpitante de cada actuaci\xf3n de Amanecer, transformando canciones en experiencias memorables.</p>
1432                            </div>
1433                            <div class="bio-description lang-en">
1434                                <p>Meet Diego Alvarez (stage name: Diego), Amanecer's 25-year-old frontman with passionate voice and magnetic charismatic presence. His warm, tenor-leaning timbre, wide dynamic range and precise phrasing let him move from intimate verses to full-tilt choruses, drawing on rock, Latin folk and s
1434oul influences that bring authentic emotional depth. On stage, his phrasing and controlled dynamics guide arrangements, turning quiet moments into powerful climaxes that define the group's explosive energy. Diego shapes Amanecer's sonic identity and live momentum with every note, anchoring melodies and driving concert atmosphere with intensity that electrifies the crowd. His vocal delivery combines refined technique with raw passion, creating performances that feel both polished and viscerally honest. Diego's ability to connect emotionally with lyrics and audiences alike makes him the beating heart of every Amanecer performance, transforming songs into memorable experiences.</p>
1435                            </div>
1436                        </div>
1437                    </div>
1438                </div>
1439            </div>
1440            
1441            <footer class="main-footer">
1442                <div class="container">
1443                    <div class="social-links">
1444                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="social-link">📺</a>
1445                        <a href="https://www.instagram.com/amanecermusicband/" target="_blank" class="social-link">📷</a>
1446                        <a href="https://www.tiktok.com/@amanecerofficial" target="_blank" class="social-link">🎵</a>
1447                        <a href="https://facebook.com/AmanecerMusicBand" target="_blank" class="social-link">👥</a>
1448                    </div>
1449                    <p class="lang-es">&copy; 2025 Amanecer. Todos los derechos reservados.</p>
1450                    <p class="lang-en">&copy; 2025 Amanecer. All rights reserved.</p>
1451                </div>
1452            </footer>
1453        </div>
1454<div id="bio-elena-castillo" class="page-container bio-page">
1455            <div class="bio-header">
1456                <div class="container">
1457                    <a href="#artists" data-action="back" class="back-button lang-es">← Volver a Artistas</a>
1458                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
1459                </div>
1460            </div>
1461            
1462            <div class="bio-content">
1463                <div class="container">
1464                    <div class="bio-card">
1465                        <div class="bio-image-section">
1466                            <img src="https://media.echovira.com/amanecer/amanecer_elena_castillo_female_singer_portrait_0.png" alt="Elena Castillo" class="bio-artist-image"
1467                srcset="https://media.echovira.com/amanecer/amanecer_elena_castillo_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_elena_castillo_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_elena_castillo_female_singer_portrait_0-full.webp 1024w"
1468                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
1469                        </div>
1470                        <div class="bio-text-section">
1471                            <div class="bio-artist-title">
1472                                <h1>Elena Castillo</h1>
1473                                <div class="stage-name">"Elena" • 27 a\xf1os</div>
1474                                <div class="role lang-es">Cantante</div>
1475                                <div class="role lang-en">Female Singer</div>
1476                            </div>
1477                            <div class="bio-description lang-es">
1478                                <p>Conoce a Elena Castillo (Elena), la cantante de Amanecer de 27 a\xf1os: una potencia sofisticada con voz elegante y refinada que combina sutileza con poder emocional arrollador. Su timbre c\xe1lido y luminoso con rango amplio define la paleta s\xf3nica de la banda, mientras su fraseo preciso, din\xe1micas espaciosas y presencia esc\xe9nica magn\xe9tica convierten momentos tranquilos en crescendos de banda completa que elevan cada actuaci\xf3n. Influenciada por fraseo jazz\xedstico y pop latino contempor\xe1neo, Elena equilibra estilo improvisacional con intenci\xf3n mel\xf3dica clara que da profundidad \xfanica al sonido de Amanecer. En el escenario y en estudio, Elena da forma a los arreglos creando l\xedneas vocales que gu\xedan los grooves de la banda y elevan la energ\xeda en vivo con control vocal impecable. Su habilidad para navegar desde pasajes \xedntimos hasta explosiones vocales poderosas mientras mantiene elegancia y refinamiento la establece como una de las vocalistas m\xe1s distintivas en la escena musical espa\xf1ola actual.</p>
1479                            </div>
1480                            <div class="bio-description lang-en">
1481                                <p>Meet Elena Castillo (stage name: Elena), Amanecer's 27-year-old female singer: a sophisticated powerhouse with elegant, refined voice that blends subtlety with overwhelming emotional power. Her warm, luminous timbre and wide range define the band's sonic palette, while her precise phrasing, spacious dynamics and magnetic stage presence convert quiet moments into full-band crescendos that elevate every performance. Influenced by jazz phrasing and contemporary Latin pop, Elena balances improvisational flair with clear melodic intent that brings unique depth to Amanecer's sound. On stage and in studio, Elena shapes arrangements by crafting vocal lines that guide the band's grooves and lift live energy with impeccable vocal control. Her ability to navigate from intimate passages to powerful vocal explosions while maintaining elegance and refinement establishes her as one of the most distinctive vocalists in today's 
1481Spanish music scene.</p>
1482                            </div>
1483                        </div>
1484                    </div>
1485                </div>
1486            </div>
1487            
1488            <footer class="main-footer">
1489                <div class="container">
1490                    <div class="social-links">
1491                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="social-link">📺</a>
1492                        <a href="https://www.instagram.com/amanecermusicband/" target="_blank" class="social-link">📷</a>
1493                        <a href="https://www.tiktok.com/@amanecerofficial" target="_blank" class="social-link">🎵</a>
1494                        <a href="https://facebook.com/AmanecerMusicBand" target="_blank" class="social-link">👥</a>
1495                    </div>
1496                    <p class="lang-es">&copy; 2025 Amanecer. Todos los derechos reservados.</p>
1497                    <p class="lang-en">&copy; 2025 Amanecer. All rights reserved.</p>
1498                </div>
1499            </footer>
1500        </div>
1501<div id="bio-isabella-vega" class="page-container bio-page">
1502            <div class="bio-header">
1503                <div class="container">
1504                    <a href="#artists" data-action="back" class="back-button lang-es">← Volver a Artistas</a>
1505                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
1506                </div>
1507            </div>
1508            
1509            <div class="bio-content">
1510                <div class="container">
1511                    <div class="bio-card">
1512                        <div class="bio-image-section">
1513                            <img src="https://media.echovira.com/amanecer/amanecer_isabella_vega_female_singer_portrait_1.png" alt="Isabella Vega" class="bio-artist-image"
1514                srcset="https://media.echovira.com/amanecer/amanecer_isabella_vega_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/amanecer/amanecer_isabella_vega_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/amanecer/amanecer_isabella_vega_female_singer_portrait_1-full.webp 1024w"
1515                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
1516                        </div>
1517                        <div class="bio-text-section">
1518                            <div class="bio-artist-title">
1519                                <h1>Isabella Vega</h1>
1520                                <div class="stage-name">"Isabella" • 25 a\xf1os</div>
1521                                <div class="role lang-es">Cantante</div>
1522                                <div class="role lang-en">Female Singer</div>
1523                            </div>
1524                            <div class="bio-description lang-es">
1525                                <p>Conoce a Isabella Vega (Isabella), 25 a\xf1os, la cantante de Amanecer con voz poderosa y elevada que lleva cada melod\xeda a nuevas alturas celestiales. Su tono c\xe1lido, rango impresionante y presencia magn\xe9tica en el escenario dan forma al sonido de Amanecer, mezclando baladas \xedntimas con momentos pop explosivos que escuchar\xe1s en nuestros pr\xf3ximos lanzamientos. Como vocalista ofrece timbre c\xe1lido y claro, rango amplio desde graves resonantes hasta agudos brillantes, fraseo expresivo y control din\xe1mico preciso, inspir\xe1ndose en influencias conmovedoras y contempor\xe1neas que dan autenticidad emocional. Su presencia esc\xe9nica enmarca la energ\xeda en vivo de la banda, convirtiendo pasajes tranquilos en enfoque \xedntimo y cl\xedmax en elevaci\xf3n de banda completa que transforma cada concierto. En el escenario, su timing y matiz emocional reconfiguran arreglos en el momento, dirigiendo a Amanecer hacia texturas m\xe1s audaces y momentos memorables que quedan grabados en el alma de cada oyente.</p>
1526                            </div>
1527                            <div class="bio-description lang-en">
1528                                <p>Meet Isabella Vega (stage name: Isabella), 25, Amanecer's female singer with soaring, commanding voice that carries every melody to new celestial heights. Her warm tone, impressive range and magnetic stage presence shape Amanecer's sound, blending intimate ballads with explosive pop moments you'll hear on our upcoming releases. As vocalist she offers warm, clear timbre, wide range from resonant lows to brilliant highs, expressive phrasing and precise dynamic control, drawing on soulful and contemporary influences that bring emotional authenticity. Her stage presence frames the band's live energy, turning quiet passages into intimate focus and climaxes into full-band lift that transforms every concert. On stage, her timing and emotional nuance reshape arrangements in the moment, steering Amanecer toward bolder textures and memorable moments that remain engraved in every listener's soul.</p>
1529                            </div>
1530                        </div>
1531                    </div>
1532                </div>
1533            </div>
1534            
1535            <footer class="main-footer">
1536                <div class="container">
1537                    <div class="social-links">
1538                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="social-link">📺</a>
1539                        <a href="https://www.instagram.com/amanecermusicband/" target="_blank" class="social-link">📷</a>
1540                        <a href="https://www.tiktok.com/@amanecerofficial" target="_blank" class="social-link">🎵</a>
1541                        <a href="https://facebook.com/AmanecerMusicBand" target="_blank" class="social-link">👥</a>
1542                    </div>
1543                    <p class="lang-es">&copy; 2025 Amanecer. Todos los derechos reservados.</p>
1544                    <p class="lang-en">&copy; 2025 Amanecer. All rights reserved.</p>
1545                </div>
1546            </footer>
1547        </div>
1548<div id="bio-javier-cruz" class="page-container bio-page">
1549            <div class="bio-header">
1550                <div class="container">
1551                    <a href="#artists" data-action="back" class="back-button lang-es">← Volver a Artistas</a>
1552                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
1553                </div>
1554            </div>
1555            
1556            <div class="bio-content">
1557                <div class="container">
1558                    <div class="bio-card">
1559                        <div class="bio-image-section">
1560                            <img src="https://media.echovira.com/amanecer/amanecer_javier_cruz_male_singer_portrait_0.png" alt="Javier Cruz" class="bio-artist-image"
1561                srcset="https://media.echovira.com/amanecer/amanecer_javier_cruz_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_javier_cruz_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_javier_cruz_male_singer_portrait_0-full.
1561webp 1024w"
1562                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
1563                        </div>
1564                        <div class="bio-text-section">
1565                            <div class="bio-artist-title">
1566                                <h1>Javier Cruz</h1>
1567                                <div class="stage-name">"Javi" • 23 a\xf1os</div>
1568                                <div class="role lang-es">Cantante</div>
1569                                <div class="role lang-en">Male Singer</div>
1570                            </div>
1571                            <div class="bio-description lang-es">
1572                                <p>Conoce a Javi (Javier Cruz), la voz de Amanecer de 23 a\xf1os con energ\xeda contagiosa y una voz que emociona y mueve cada coraz\xf3n. Como cantante del grupo, Javi aporta potencia vocal impresionante, timbre c\xe1lido distintivo y ese toque juguet\xf3n \xfanico en el escenario que conecta genuinamente con la gente y crea momentos m\xe1gicos. Su presencia vibrante y pasi\xf3n aut\xe9ntica elevan el sonido de Amanecer, mezclando melod\xeda brillante y alma profunda en cada canci\xf3n que interpreta. Un artista juguet\xf3n que conecta con fans a trav\xe9s de interacci\xf3n optimista y presencia genuina, Javi trae timbre c\xe1lido y claro, rango flexible de medio a alto, fraseo preciso, control din\xe1mico excepcional, fuerte presencia esc\xe9nica e influencias del indie pop y rock latino que dan frescura contempor\xe1nea. Sus elecciones mel\xf3dicas y fraseo dan forma a los arreglos de la banda, ayudando a que los coros se eleven y los versos aterricen con intimidad conmovedora. En shows en vivo, su energ\xeda de llamada y respuesta y fraseo din\xe1mico empujan a la banda hacia grooves m\xe1s apretados y picos m\xe1s grandes que electrifican a la multitud.</p>
1573                            </div>
1574                            <div class="bio-description lang-en">
1575                                <p>Meet Javi (Javier Cruz), Amanecer's 23-year-old voice with infectious energy and a voice that moves and touches every heart. As the band's vocalist, Javi brings impressive vocal power, distinctive warm timbre and that unique playful touch on stage that genuinely connects with people and creates magical moments. His vibrant presence and authentic passion lift Amanecer's sound, blending brilliant melody and deep soul in every song he performs. A playful performer who connects with fans through upbeat interaction and genuine presence, Javi brings warm, clear timbre, flexible mid-to-high range, precise phrasing, exceptional dynamic control, strong stage presence and influences from indie pop and Latin rock that bring contemporary freshness. His melodic choices and phrasing shape the band's arrangements, helping choruses soar and verses land with moving intimacy. In live shows, his call-and-response energy and dynamic phrasing push the band into tighter grooves and bigger peaks that electrify the crowd.</p>
1576                            </div>
1577                        </div>
1578                    </div>
1579                </div>
1580            </div>
1581            
1582            <footer class="main-footer">
1583                <div class="container">
1584                    <div class="social-links">
1585                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="social-link">📺</a>
1586                        <a href="https://www.instagram.com/amanecermusicband/" target="_blank" class="social-link">📷</a>
1587                        <a href="https://www.tiktok.com/@amanecerofficial" target="_blank" class="social-link">🎵</a>
1588                        <a href="https://facebook.com/AmanecerMusicBand" target="_blank" class="social-link">👥</a>
1589                    </div>
1590                    <p class="lang-es">&copy; 2025 Amanecer. Todos los derechos reservados.</p>
1591                    <p class="lang-en">&copy; 2025 Amanecer. All rights reserved.</p>
1592                </div>
1593            </footer>
1594        </div>
1595<div id="bio-lucia-morales" class="page-container bio-page">
1596            <div class="bio-header">
1597                <div class="container">
1598                    <a href="#artists" data-action="back" class="back-button lang-es">← Volver a Artistas</a>
1599                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
1600                </div>
1601            </div>
1602            
1603            <div class="bio-content">
1604                <div class="container">
1605                    <div class="bio-card">
1606                        <div class="bio-image-section">
1607                            <img src="https://media.echovira.com/amanecer/amanecer_lucia_morales_female_singer_portrait_1.png" alt="Lucia Morales" class="bio-artist-image"
1608                srcset="https://media.echovira.com/amanecer/amanecer_lucia_morales_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/amanecer/amanecer_lucia_morales_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/amanecer/amanecer_lucia_morales_female_singer_portrait_1-full.
1608webp 1024w"
1609                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
1610                        </div>
1611                        <div class="bio-text-section">
1612                            <div class="bio-artist-title">
1613                                <h1>Lucia Morales</h1>
1614                                <div class="stage-name">"Lucia" • 24 a\xf1os</div>
1615                                <div class="role lang-es">Cantante</div>
1616                                <div class="role lang-en">Female Singer</div>
1617                            </div>
1618                            <div class="bio-description lang-es">
1619                                <p>Conoce a Luc\xeda Morales (Luc\xeda), la voz femenina de Amanecer de 24 a\xf1os: intensidad dram\xe1tica y elegancia refinada que te atrapan desde la primera nota y no te sueltan. Su voz c\xe1lida y poderosa —la estrella dram\xe1tica que combina intensidad arrolladora con elegancia sofisticada— aporta emoci\xf3n profunda, matices sutiles y una entrega esc\xe9nica \xfanica e inolvidable que define el sonido caracter\xedstico de la banda. Como cantante femenina de la banda, su timbre c\xe1lido pero penetrante abarca un rango amplio impresionante, con fraseo expresivo y control din\xe1mico cuidadoso que dan vida a cada l\xednea. En el escenario comanda atenci\xf3n con presencia equilibrada y toques teatrales informados por indie, pop con tintes de flamenco y chanson cl\xe1sica que aportan profundidad \xfanica. Su voz reconfigura los arreglos de Amanecer, elevando crescendos dram\xe1ticos, tallando versos \xedntimos conmovedores y conduciendo la energ\xeda en vivo desde lo reflexivo hasta lo electrizante con maestr\xeda impecable.</p>
1620                            </div>
1621                            <div class="bio-description lang-en">
1622                                <p>Meet Luc\xeda Morales (stage name: Luc\xeda), Amanecer's 24-year-old female voice: dramatic intensity and refined elegance that grab you from the very first note and don't let go. Her warm, powerful voice —the dramatic starlet combining overwhelming intensity with sophisticated elegance— brings deep emotion, subtle nuances and a unique, unforgettable stage delivery that defines the band's signature sound. As the band's female singer, her warm yet piercing timbre spans an impressive wide range, with expressive phrasing and careful dynamic control that bring every line to life. On stage she commands attention with poised presence and theatrical touches informed by indie, flamenco-tinged pop and classic chanson that bring unique depth. Her voice reshapes Amanecer's arrangements, lifting dramatic crescendos, carving moving intimate verses and driving live energy from reflective to electrifying with impeccable mastery.</p>
1623                            </div>
1624                        </div>
1625                    </div>
1626                </div>
1627            </div>
1628            
1629            <footer class="main-footer">
1630                <div class="container">
1631                    <div class="social-links">
1632                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="social-link">📺</a>
1633                        <a href="https://www.instagram.com/amanecermusicband/" target="_blank" class="social-link">📷</a>
1634                        <a href="https://www.tiktok.com/@amanecerofficial" target="_blank" class="social-link">🎵</a>
1635                        <a href="https://facebook.com/AmanecerMusicBand" target="_blank" class="social-link">👥</a>
1636                    </div>
1637                    <p class="lang-es">&copy; 2025 Amanecer. Todos los derechos reservados.</p>
1638                    <p class="lang-en">&copy; 2025 Amanecer. All rights reserved.</p>
1639                </div>
1640            </footer>
1641        </div>
1642<div id="bio-marina-lopez" class="page-container bio-page">
1643            <div class="bio-header">
1644                <div class="container">
1645                    <a href="#artists" data-action="back" class="back-button lang-es">← Volver a Artistas</a>
1646                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
1647                </div>
1648            </div>
1649            
1650            <div class="bio-content">
1651                <div class="container">
1652                    <div class="bio-card">
1653                        <div class="bio-image-section">
1654                            <img src="https://media.echovira.com/amanecer/amanecer_marina_lopez_multi_instrumentalist_portrait_1.png" alt="Marina Lopez" class="bio-artist-image"
1655                srcset="https://media.echovira.com/amanecer/amanecer_marina_lopez_multi_instrumentalist_portrait_1-400.webp 400w, https://media.echovira.com/amanecer/amanecer_marina_lopez_multi_instrumentalist_portrait_1-800.webp 800w, https://media.echovira.com/amanecer/amanecer_marina_lopez_multi_instrumentalist_portrait_1-full.
1655webp 1024w"
1656                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
1657                        </div>
1658                        <div class="bio-text-section">
1659                            <div class="bio-artist-title">
1660                                <h1>Marina Lopez</h1>
1661                                <div class="stage-name">"Marina" • 25 a\xf1os</div>
1662                                <div class="role lang-es">Multi-instrumentista</div>
1663                                <div class="role lang-en">Multi-Instrumentalist</div>
1664                            </div>
1665                            <div class="bio-description lang-es">
1666                                <p>Marina L\xf3pez (Marina), 25 a\xf1os, la multi-instrumentalista de Amanecer cuyas manos m\xe1gicas y virtuosismo extraordinario definen nuestro sonido \xfanico. Toca guitarra flamenca, piano cl\xe1sico y percusi\xf3n con t\xe9cnica impecable y pasi\xf3n desbordante, aportando texturas ricas que mezclan flamenco tradicional, pop contempor\xe1neo y electr\xf3nica experimental en cada pista. Una m\xfasica experimental que fusiona texturas de flamenco, pop y electr\xf3nica con maestr\xeda innovadora, sus capas multi-instrumentales son el pegamento emocional de la banda, a\xf1adiendo ganchos mel\xf3dicos memorables y color r\xedtmico vibrante que expanden los arreglos de Amanecer hacia territorios inexplorados. Como vocalista ofrece timbre c\xe1lido y expresivo con fraseo din\xe1mico que resalta picos emocionales intensos. En instrumentos favorece articulaci\xf3n clara y grooves inventivos \xfanicos, proporcionando los motivos distintivos alrededor de los cuales el grupo construye momentos m\xe1gicos. Como compositora y arreglista da forma a motivos memorables y estructuras de canciones con prop\xf3sito claro que conducen el arco narrativo de cada pista.</p>
1667                            </div>
1668                            <div class="bio-description lang-en">
1669                                <p>Marina Lopez (stage name: Marina), 25, Amanecer's multi-instrumentalist whose magical hands and extraordinary virtuosity define our unique sound. She plays flamenco guitar, classical piano and percussion with impeccable technique and overflowing passion, bringing rich textures that blend traditional flamenco, contemporary pop and experimental electronics in every track. An experimental musician fusing flamenco, pop and electronic textures with innovative mastery, her multi-instrumental layers are the band's emotional glue, adding memorable melodic hooks and vibrant rhythmic color that expand Amanecer's arrangements toward unexplored territories. As vocalist she offers warm, expressive timbre with dynamic phrasing that highlights intense emotional peaks. On instruments she favors clear articulation and unique inventive grooves, providing the distinctive motifs around which the group builds magical moments. As songwriter and arranger she shapes memorable motifs and purposeful song structures that drive the narrative arc of each track.</p>
1670                            </div>
1671                        </div>
1672                    </div>
1673                </div>
1674            </div>
1675            
1676            <footer class="main-footer">
1677                <div class="container">
1678                    <div class="social-links">
1679                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="social-link">📺</a>
1680                        <a href="https://www.instagram.com/amanecermusicband/" target="_blank" class="social-link">📷</a>
1681                        <a href="https://www.tiktok.com/@amanecerofficial" target="_blank" class="social-link">🎵</a>
1682                        <a href="https://facebook.com/AmanecerMusicBand" target="_blank" class="social-link">👥</a>
1683                    </div>
1684                    <p class="lang-es">&copy; 2025 Amanecer. Todos los derechos reservados.</p>
1685                    <p class="lang-en">&copy; 2025 Amanecer. All rights reserved.</p>
1686                </div>
1687            </footer>
1688        </div>
1689<div id="bio-mateo-ramos" class="page-container bio-page">
1690            <div class="bio-header">
1691                <div class="container">
1692                    <a href="#artists" data-action="back" class="back-button lang-es">← Volver a Artistas</a>
1693                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
1694                </div>
1695            </div>
1696            
1697            <div class="bio-content">
1698                <div class="container">
1699                    <div class="bio-card">
1700                        <div class="bio-image-section">
1701                            <img src="https://media.echovira.com/amanecer/amanecer_mateo_ramos_male_singer_portrait_0.png" alt="Mateo Ramos" class="bio-artist-image"
1702                srcset="https://media.echovira.com/amanecer/amanecer_mateo_ramos_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_mateo_ramos_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_mateo_ramos_male_singer_portrait_0-full.
1702webp 1024w"
1703                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
1704                        </div>
1705                        <div class="bio-text-section">
1706                            <div class="bio-artist-title">
1707                                <h1>Mateo Ramos</h1>
1708                                <div class="stage-name">"Mateo" • 27 a\xf1os</div>
1709                                <div class="role lang-es">Cantante</div>
1710                                <div class="role lang-en">Male Singer</div>
1711                            </div>
1712                            <div class="bio-description lang-es">
1713                                <p>Conoce a Mateo Ramos (Mateo), cantante de Amanecer de 27 a\xf1os: voz potente, emotiva y profundamente conmovedora. Su timbre c\xe1lido envolvente, rango expresivo impresionante y la energ\xeda aut\xe9ntica que entrega en vivo elevan el sonido de la banda desde baladas sentidas hasta himnos poderosos que prenden al p\xfablico y transforman cada concierto en experiencia inolvidable. Una potencia emocional que canta baladas sinceras con alma genuina, su tenor claro y expresivo corta a trav\xe9s de arreglos complejos con facilidad. Su timbre c\xe1lido y rango amplio se emparejan con fraseo matizado y control din\xe1mico excepcional, inspir\xe1ndose en influencias de folk y pop que aportan autenticidad emocional profunda. Las voces de Mateo reconfiguran el sonido de Amanecer, anclando arreglos sofisticados y elevando energ\xeda en vivo con momentos \xedntimos conmovedores y coros elevados que resuenan en el alma. Su habilidad para transmitir vulnerabilidad sin perder poder vocal lo convierte en narrador \xfanico.</p>
1714                            </div>
1715                            <div class="bio-description lang-en">
1716                                <p>Meet Mateo Ramos (stage name: Mateo), Amanecer's 27-year-old male singer: powerful, emotive and deeply moving voice. His enveloping warm timbre, impressive expressive range and authentic energy he delivers live lift the band's sound from heartfelt ballads to powerful anthems that ignite audiences and transform every concert into an unforgettable experience. An emotional powerhouse who sings heartfelt ballads with genuine soul, his clear, expressive tenor cuts through complex arrangements with ease. His warm timbre and wide range pair with nuanced phrasing and exceptional dynamic control, drawing on folk and pop influences that bring deep emotional authenticity. Mateo's vocals reshape Amanecer's sound, anchoring sophisticated arrangements and raising live energy with moving intimate moments and s
1716oaring choruses that resonate in the soul. His ability to convey vulnerability without losing vocal power makes him a unique storyteller.</p>
1717                            </div>
1718                        </div>
1719                    </div>
1720                </div>
1721            </div>
1722            
1723            <footer class="main-footer">
1724                <div class="container">
1725                    <div class="social-links">
1726                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="social-link">📺</a>
1727                        <a href="https://www.instagram.com/amanecermusicband/" target="_blank" class="social-link">📷</a>
1728                        <a href="https://www.tiktok.com/@amanecerofficial" target="_blank" class="social-link">🎵</a>
1729                        <a href="https://facebook.com/AmanecerMusicBand" target="_blank" class="social-link">👥</a>
1730                    </div>
1731                    <p class="lang-es">&copy; 2025 Amanecer. Todos los derechos reservados.</p>
1732                    <p class="lang-en">&copy; 2025 Amanecer. All rights reserved.</p>
1733                </div>
1734            </footer>
1735        </div>
1736<div id="bio-sofia-delgado" class="page-container bio-page">
1737            <div class="bio-header">
1738                <div class="container">
1739                    <a href="#artists" data-action="back" class="back-button lang-es">← Volver a Artistas</a>
1740                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
1741                </div>
1742            </div>
1743            
1744            <div class="bio-content">
1745                <div class="container">
1746                    <div class="bio-card">
1747                        <div class="bio-image-section">
1748                            <img src="https://media.echovira.com/amanecer/amanecer_sofia_delgado_female_singer_portrait_0.png" alt="Sofia Delgado" class="bio-artist-image"
1749                srcset="https://media.echovira.com/amanecer/amanecer_sofia_delgado_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_sofia_delgado_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_sofia_delgado_female_singer_portrait_0-full.webp 1024w"
1750                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
1751                        </div>
1752                        <div class="bio-text-section">
1753                            <div class="bio-artist-title">
1754                                <h1>Sofia Delgado</h1>
1755                                <div class="stage-name">"Sofia" • 26 a\xf1os</div>
1756                                <div class="role lang-es">Cantante</div>
1757                                <div class="role lang-en">Female Singer</div>
1758                            </div>
1759                            <div class="bio-description lang-es">
1760                                <p>Conoce a Sof\xeda Delgado (art\xedsticamente "Sofia"), la voz femenina de Amanecer de 26 a\xf1os: voz c\xe1lida, mielada y chispeante que ilumina nuestro sonido con brillo \xfanico. Su timbre vocal juguet\xf3n y su energ\xeda viva dan vida vibrante a cada estribillo pegajoso y transforman melod\xedas simples en historias emotivas complejas. En el estudio, su control vocal impecable y expresividad din\xe1mica elevan los arreglos de la banda y definen nuestro sello sonoro caracter\xedstico con frescura contempor\xe1nea. Una chispa vivaz con voces juguetonas y energ\xeda cin\xe9tica que define su arte \xfanico, su timbre mielado c\xe1lido y rango mezzo flexible se mueven desde fraseo \xedntimo hasta cl\xedmax brillantes y contundentes; usa contraste din\xe1mico y ornamentaci\xf3n juguetona influenciada por pop latino, indie folk y jazz que aportan personalidad distintiva. En el escenario, su fraseo expresivo y presencia fuerte convierten arreglos en momentos inmediatos memorables, dando forma a la energ\xeda en vivo de Amanecer.</p>
1761                            </div>
1762                            <div class="bio-description lang-en">
1763                                <p>Meet Sofia Delgado (stage name: Sofia), Amanecer's 26-year-old female voice: warm, honeyed and sparkling voice that lights up our sound with unique brilliance. Her playful vocal timbre and lively energy bring vibrant life to every catchy chorus and transform simple melodies into complex emotive stories. In the studio, her impeccable vocal control and dynamic expressiveness lift the band's arrangements and define our signature sonic stamp with contemporary freshness. A lively spark with playful vocals and kinetic energy defining her unique artistry, her warm honeyed timbre and flexible mezzo range move from intimate phrasing to bright, punchy climaxes; she uses dynamic contrast and playful ornamentation influenced by Latin pop, indie folk and jazz that bring distinctive personality. On stage, her expressive phrasing and strong presence turn arrangements into memorable immediate moments, shaping Amanecer's live energy.</p>
1764                            </div>
1765                        </div>
1766                    </div>
1767                </div>
1768            </div>
1769            
1770            <footer class="main-footer">
1771                <div class="container">
1772                    <div class="social-links">
1773                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="social-link">📺</a>
1774                        <a href="https://www.instagram.com/amanecermusicband/" target="_blank" class="social-link">📷</a>
1775                        <a href="https://www.tiktok.com/@amanecerofficial" target="_blank" class="social-link">🎵</a>
1776                        <a href="https://facebook.com/AmanecerMusicBand" target="_blank" class="social-link">👥</a>
1777                    </div>
1778                    <p class="lang-es">&copy; 2025 Amanecer. Todos los derechos reservados.</p>
1779                    <p class="lang-en">&copy; 2025 Amanecer. All rights reserved.</p>
1780                </div>
1781            </footer>
1782        </div>
1783<div id="bio-valeria-dominguez" class="page-container bio-page">
1784            <div class="bio-header">
1785                <div class="container">
1786                    <a href="#artists" data-action="back" class="back-button lang-es">← Volver a Artistas</a>
1787                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
1788                </div>
1789            </div>
1790            
1791            <div class="bio-content">
1792                <div class="container">
1793                    <div class="bio-card">
1794                        <div class="bio-image-section">
1795                            <img src="https://media.echovira.com/amanecer/amanecer_valeria_dominguez_composer_lyricist_portrait_0.png" alt="Valeria Dominguez" class="bio-artist-image"
1796                srcset="https://media.echovira.com/amanecer/amanecer_valeria_dominguez_composer_lyricist_portrait_0-400.webp 400w, https://media.echovira.com/amanecer/amanecer_valeria_dominguez_composer_lyricist_portrait_0-800.webp 800w, https://media.echovira.com/amanecer/amanecer_valeria_dominguez_composer_lyricist_portrait_0-full.
1796webp 1024w"
1797                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
1798                        </div>
1799                        <div class="bio-text-section">
1800                            <div class="bio-artist-title">
1801                                <h1>Valeria Dominguez</h1>
1802                                <div class="stage-name">"Valeria" • 26 a\xf1os</div>
1803                                <div class="role lang-es">Compositora y Letrista</div>
1804                                <div class="role lang-en">Composer & Lyricist</div>
1805                            </div>
1806                            <div class="bio-description lang-es">
1807                                <p>Conoce a Valeria Dom\xednguez (Valeria), 26 a\xf1os, la compositora, arreglista y letrista que da forma al sonido \xfanico e identidad musical de Amanecer. Su pluma po\xe9tica combina profundidad filos\xf3fica, romanticismo l\xedrico y melod\xedas memorables que definen nuestro rumbo musical distintivo y establecen nuestra firma art\xedstica. Desde bocetos \xedntimos en piano hasta arreglos completos orquestales, su proceso creativo meticuloso transforma emociones crudas en canciones pulidas que iluminan cada presentaci\xf3n en vivo con magia pura. Una letrista po\xe9tica cuyas palabras llevan profundidad existencial y romanticismo conmovedor, como compositora de Amanecer esculpe melod\xedas brillantes y colores arm\xf3nicos ricos, favoreciendo desarrollo de motivos distintivos, progresiones de acordes firma y arreglos que permiten que ganchos memorables respiren con vida propia. Sus elecciones arm\xf3nicas a menudo se apoyan en cambios modales c\xe1lidos que se convierten en la firma caracter\xedstica de Amanecer. Como letrista escribe con imaginer\xeda v\xedvida impactante, cadencia cuidadosa y narrativa \xedntima que da columna vertebral emocional a cada canci\xf3n.</p>
1808                            </div>
1809                            <div class="bio-description lang-en">
1810                                <p>Meet Valeria Dominguez (stage name: Valeria), 26, the composer, arranger and lyricist shaping Amanecer's unique sound and musical identity. Her poetic pen blends philosophical depth, lyrical romanticism and memorable melodies that define our distinctive musical direction and establish our artistic signature. From intimate piano sketches to complete orchestral arrangements, her meticulous creative process transforms raw emotions into polished songs that illuminate every live performance with pure magic. A poetic lyricist whose words carry existential depth and moving romanticism, as Amanecer's composer she sculpts brilliant melodies and rich harmonic colors, favoring development of distinctive motifs, signature chord progressions and arrangements that let memorable hooks breathe with their own life. Her harmonic choices often lean on warm modal shifts that become Amanecer's characteristic signature. As lyricist she writes with striking vivid imagery, careful cadence and intimate narrative that gives emotional backbone to every song.</p>
1811                            </div>
1812                        </div>
1813                    </div>
1814                </div>
1815            </div>
1816            
1817            <footer class="main-footer">
1818                <div class="container">
1819                    <div class="social-links">
1820                        <a href="https://www.youtube.com/@AmanecerOfficial" target="_blank" class="social-link">📺</a>
1821                        <a href="https://www.instagram.com/amanecermusicband/" target="_blank" class="social-link">📷</a>
1822                        <a href="https://www.tiktok.com/@amanecerofficial" target="_blank" class="social-link">🎵</a>
1823                        <a href="https://facebook.com/AmanecerMusicBand" target="_blank" class="social-link">👥</a>
1824                    </div>
1825                    <p class="lang-es">&copy; 2025 Amanecer. Todos los derechos reservados.</p>
1826                    <p class="lang-en">&copy; 2025 Amanecer. All rights reserved.</p>
1827                </div>
1828            </footer>
1829        </div>
1830</div>
1831
1832
1833
1834<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
1835  <nav aria-label="Site pages">
1836    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
1837    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
1838    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
1839    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
1840  </nav>
1841  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
1842</footer>
1843`;e.s(["AmanecerEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=(0,t.injectFluidCanvas)(a,"#d45000","#0d1117",.28);function s(e){document.body.classList.remove("lang-es","lang-en"),document.body.classList.add("lang-"+e),a.querySelectorAll("[data-lang]").forEach(e
1843=>e.classList.remove("active")),a.querySelector(`[data-lang="${e}"]`)?.classList.add("active")}function r(e){let a=document.getElementById("mainPage"),i=document.getElementById("bio-"+e);a&&i&&(a.classList.remove("active"),document.querySelectorAll(".bio-page").forEach(e=>e.classList.remove("active")),i.classList.add("active"),window.scrollTo(0,0))}function n(){document.querySelectorAll(".page-container").forEach(e=>e.classList.remove("active")),document.getElementById("mainPage")?.classList.add("active"),window.scrollTo(0,0)}function o(e){let a=e.target,i=a.closest("[data-artist-id]");if(i){e.preventDefault(),r(i.dataset.artistId);return}if(a.closest('[data-action="back"]')){e.preventDefault(),n();return}}window.setLanguage=s,s("es"),a.querySelector('[data-lang="es"]')?.addEventListener("click",()=>s("es")),a.querySelector('[data-lang="en"]')?.addEventListener("click",()=>s("en")),window.showArtistBio=r,window.showMainPage=n,window.hideBioPage=n;let l=document.getElementById("mobileToggle"),c=document.getElementById("navMenu");l&&c&&l.addEventListener("click",()=>c.classList.toggle("active"));let d=()=>document.getElementById("mainNav")?.classList.toggle("scrolled",window.scrollY>100);return a.addEventListener("click",o),window.addEventListener("scroll",d),()=>{i(),a.removeEventListener("click",o),window.removeEventListener("scroll",d),delete window.setLanguage,delete window.showArtistBio,delete window.showMainPage,delete window.hideBioPage}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,className:"echovira-page-root",dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(n)},suppressHydrationWarning:!0}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},131796,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n=`
1844    <link rel="preconnect" href="https://fonts.googleapis.com">
1845    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
1846    <link href="https://fonts.googleapis.com/css2?family=Cairo:wght@400;500;600;700;800&family=Tajawal:wght@400;500;700;800&display=swap" rel="stylesheet">
1847    <style>
1848        .vc_row[data-vc-full-width], .wpb_column, .vc_column_container, .wpb_wrapper, .entry-content, .site-content-contain, #content, .site-content, .site, #page, main {
1849            width: 100% !important;
1850            max-width: 100% !important;
1851            padding: 0 !important;
1852            margin: 0 !important;
1853            margin-top: 0 !important;
1854            padding-top: 0 !important;
1855        }
1856
1857        /* Arabic & Gulf-Inspired Theme Colors */
1858        :root {
1859            --ev-bg: #fafafa;
1860            --ev-fg: #2c2c2c;
1861            --primary-color: #1a1a1a;
1862            --saudi-green: #006C35;
1863            --uae-red: #CE1126;
1864            --gold: #C9A86D;
1865            --deep-green: #004225;
1866            --accent-red: #B8001F;
1867            --text-light: #ffffff;
1868            --text-dark: #2c2c2c;
1869            --background-dark: #0a0a0a;
1870            --background-light: #fafafa;
1871            --gradient-main: linear-gradient(135deg, #006C35 0%, #C9A86D 50%, #CE1126 100%);
1872            --shadow-light: 0 2px 20px rgba(0,0,0,0.1);
1873            --shadow-heavy: 0 10px 40px rgba(0,0,0,0.2);
1874            --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1875        }
1876
1877        * {
1878            margin: 0;
1879            padding: 0;
1880            box-sizing: border-box;
1881        }
1882
1883        body {
1884            font-family: 'Cairo', 'Tajawal', -apple-system, sans-serif;
1885            line-height: 1.8;
1886            color: var(--ev-fg);
1887            background: var(--ev-bg);
1888            overflow-x: hidden;
1889            margin: 0 !important;
1890            padding: 0 !important;
1891        }
1892
1893        /* Hide inactive language */
1894        body:not(.lang-ar) .lang-ar { display: none !important; }
1895        body:not(.lang-en) .lang-en { display: none !important; }
1896
1897        /* Language Toggle */
1898        .lang-toggle {
1899            position: absolute;
1900            top: 20px;
1901            right: 20px;
1902            z-index: 1001;
1903            background: rgba(255,255,255,0.2);
1904            border-radius: 25px;
1905            padding: 8px;
1906            backdrop-filter: blur(10px);
1907        }
1908
1909        .lang-toggle button {
1910            background: transparent;
1911            border: none;
1912            padding: 8px 16px;
1913            cursor: pointer;
1914            font-weight: 600;
1915            border-radius: 20px;
1916            transition: var(--transition);
1917            font-size: 0.9rem;
1918            color: white;
1919        }
1920
1921        .lang-toggle button.active {
1922            background: var(--uae-red);
1923            color: white;
1924        }
1925
1926        /* Navigation */
1927        .main-nav {
1928            position: fixed;
1929            top: 0;
1930            left: 0;
1931            right: 0;
1932            background: rgba(10, 10, 10, 0.95);
1933            backdrop-filter: blur(20px);
1934            z-index: 1000;
1935            padding: 1rem 0;
1936            border-bottom: 1px solid rgba(206, 17, 38, 0.3);
1937        }
1938
1939        .nav-container {
1940            max-width: 1200px;
1941            margin: 0 auto;
1942            padding: 0 20px;
1943            padding-right: 210px;
1944            display: flex;
1945            justify-content: space-between;
1946            align-items: center;
1947        }
1948
1949        .logo img { height: 50px; }
1950
1951        .nav-menu {
1952            display: flex;
1953            list-style: none;
1954            gap: 2rem;
1955        }
1956
1957        .nav-menu a {
1958            color: var(--text-light);
1959            text-decoration: none;
1960            font-weight: 600;
1961            transition: var(--transition);
1962        }
1963
1964        .nav-menu a:hover { color: var(--gold); }
1965
1966        .mobile-menu-toggle {
1967            display: none;
1968            background: none;
1969            border: none;
1970            color: var(--text-light);
1971            font-size: 1.5rem;
1972            cursor: pointer;
1973        }
1974
1975        /* Hero Section */
1976        .hero-section {
1977            min-height: 100vh;
1978            /* Worst-case gradient stop (#C9A86D gold, the middle stop of
1979               this 3-color gradient) blended with the 55% black ::after
1980               scrim below -- the real effective background white hero
1981               text renders against. Testing convention: the ADA crawler
1982               can't see gradients (only background-color), so it falls
1983               through to a near-white default and reports white-on-white
1984               unless a solid stand-in is declared here. */
1985            --ada-contrast-bg: #5a4c31;
1986            background: var(--gradient-main);
1987            display: flex;
1988            align-items: center;
1989            justify-content: center;
1990            text-align: center;
1991            color: var(--text-light);
1992            position: relative;
1993            overflow: hidden;
1994        }
1995
1996        .hero-section::after {
1997            /* White hero text on the gradient's lighter (gold) middle
1998               stop is only 2.26:1 -- fails even the large-text 3:1
1999               threshold. This scrim darkens it to ~8.5:1 without
2000               flattening the brand gradient into a solid color. */
2001            content: '';
2002            position: absolute;
2003            inset: 0;
2004            background: rgba(0, 0, 0, 0.55);
2005            z-index: 1;
2006        }
2007
2008        .hero-section::before {
2009            content: '';
2010            position: absolute;
2011            top: 0;
2012            left: 0;
2013            right: 0;
2014            bottom: 0;
2015            background: radial-gradient(circle at 50% 0%, rgba(255,255,255,0.1) 0%, transparent 50%);
2016        }
2017
2018        .hero-content {
2019            position: relative;
2020            z-index: 2;
2021            max-width: 900px;
2022            padding: 0 20px;
2023        }
2024
2025        .hero-title {
2026            font-family: 'Cairo', serif;
2027            font-size: clamp(3rem, 8vw, 6rem);
2028            margin-bottom: 1rem;
2029            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
2030            font-weight: 800;
2031        }
2032
2033        .hero-subtitle {
2034            font-size: clamp(1rem, 2vw, 1.3rem);
2035            margin-bottom: 2rem;
2036            opacity: 0.9;
2037            line-height: 1.6;
2038        }
2039
2040        .cta-button {
2041            display: inline-block;
2042            padding: 18px 40px;
2043            background: white;
2044            color: var(--uae-red);
2045            text-decoration: none;
2046            border-radius: 50px;
2047            font-weight: 700;
2048            font-size: 1.1rem;
2049            transition: var(--transition);
2050            box-shadow: var(--shadow-light);
2051        }
2052
2053        .cta-button:hover {
2054            transform: translateY(-3px);
2055            box-shadow: var(--shadow-heavy);
2056            background: var(--gold);
2057            color: var(--primary-color);
2058        }
2059
2060        /* Sections */
2061        .section {
2062            padding: 80px 0;
2063        }
2064
2065        .section-dark {
2066            background: var(--background-dark);
2067            color: var(--text-light);
2068        }
2069
2070        .container {
2071            max-width: 1200px;
2072            margin: 0 auto;
2073            padding: 0 20px;
2074        }
2075
2076        .section-title {
2077            text-align: center;
2078            font-size: 2.5rem;
2079            margin-bottom: 3rem;
2080            position: relative;
2081            font-family: 'Cairo', serif;
2082            font-weight: 800;
2083        }
2084
2085        .section-title::after {
2086            content: '';
2087            position: absolute;
2088            bottom: -10px;
2089            left: 50%;
2090            transform: translateX(-50%);
2091            width: 80px;
2092            height: 3px;
2093            background: var(--uae-red);
2094            border-radius: 2px;
2095        }
2096
2097        .about-content {
2098            max-width: 900px;
2099            margin: 0 auto;
2100            text-align: center;
2101            line-height: 2;
2102            font-size: 1.1rem;
2103        }
2104
2105        .about-content p {
2106            margin-bottom: 1.5rem;
2107        }
2108
2109        /* Artists Gallery */
2110        .artists-gallery {
2111            display: grid;
2112            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
2113            gap: 2.5rem;
2114            margin-top: 3rem;
2115        }
2116
2117        .artist-card {
2118            position: relative;
2119            cursor: pointer;
2120            transition: var(--transition);
2121            background: white;
2122            border-radius: 20px;
2123            overflow: hidden;
2124            box-shadow: var(--shadow-light);
2125            border: 2px solid transparent;
2126        }
2127
2128        .artist-card:hover {
2129            transform: translateY(-10px) scale(1.02);
2130            box-shadow: var(--shadow-heavy);
2131            border-color: var(--gold);
2132        }
2133
2134        .artist-image-wrapper {
2135            position: relative;
2136            width: 100%;
2137            aspect-ratio: 1;
2138            overflow: hidden;
2139        }
2140
2141        .artist-image {
2142            width: 100%;
2143            height: 100%;
2144            object-fit: cover;
2145            transition: transform 0.5s ease;
2146        }
2147
2148        .artist-card:hover .artist-image {
2149            transform: scale(1.1);
2150        }
2151
2152        .artist-overlay {
2153            position: absolute;
2154            bottom: 0;
2155            left: 0;
2156            right: 0;
2157            background: linear-gradient(to top, rgba(0,0,0,0.9), transparent);
2158            padding: 2rem 1.5rem 1.5rem;
2159            color: white;
2160        }
2161
2162        .artist-stage-name {
2163            font-size: 1.5rem;
2164            font-weight: 700;
2165            margin-bottom: 0.3rem;
2166        }
2167
2168        .artist-role-badge {
2169            display: inline-block;
2170            background: var(--uae-red);
2171            padding: 4px 12px;
2172            border-radius: 15px;
2173            font-size: 0.75rem;
2174            font-weight: 600;
2175            text-transform: uppercase;
2176            letter-spacing: 0.5px;
2177        }
2178
2179        .artist-real-name {
2180            font-size: 0.9rem;
2181            opacity: 0.8;
2182            margin-top: 0.5rem;
2183        }
2184
2185        /* Releases, Videos, News */
2186        .releases-grid, .videos-grid, .news-grid {
2187            display: grid;
2188            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
2189            gap: 2rem;
2190            margin-top: 3rem;
2191        }
2192
2193        .release-card, .video-card, .news-card {
2194            background: white;
2195            border-radius: 20px;
2196            overflow: hidden;
2197            box-shadow: var(--shadow-light);
2198            transition: var(--transition);
2199            border: 2px solid transparent;
2200        }
2201
2202        .section-dark .release-card,
2203        .section-dark .video-card,
2204        .section-dark .news-card {
2205            background: rgba(255,255,255,0.05);
2206            border-color: rgba(255,255,255,0.1);
2207        }
2208
2209        .release-card:hover, .video-card:hover, .news-card:hover {
2210            transform: translateY(-10px);
2211            box-shadow: var(--shadow-heavy);
2212            border-color: var(--gold);
2213        }
2214
2215        .release-image, .video-embed, .news-image {
2216            position: relative;
2217            overflow: hidden;
2218            background: var(--gradient-main);
2219            display: flex;
2220            align-items: center;
2221            justify-content: center;
2222            color: white;
2223            font-size: 4rem;
2224        }
2225
2226        .release-image { 
2227            aspect-ratio: 1;
2228            position: relative;
2229        }
2230        
2231        .release-image img,
2232        .news-image img {
2233            width: 100%;
2234            height: 100%;
2235            object-fit: cover;
2236        }
2237
2238        .video-embed { 
2239            padding-bottom: 56.25%; 
2240            height: 0;
2241            position: relative;
2242        }
2243
2244        .video-embed iframe {
2245            position: absolute;
2246            top: 0;
2247            left: 0;
2248            width: 100%;
2249            height: 100%;
2250        }
2251
2252        .news-image { height: 200px; }
2253
2254        .release-info, .video-info, .news-content {
2255            padding: 1.5rem;
2256        }
2257
2258        .section-dark .release-info,
2259        .section-dark .video-info,
2260        .section-dark .news-content {
2261            color: var(--text-light);
2262        }
2263
2264        .release-title, .video-title, .news-title {
2265            font-size: 1.3rem;
2266            margin-bottom: 0.5rem;
2267            font-weight: 700;
2268            color: var(--text-dark);
2269        }
2270
2271        .section-dark .release-title,
2272        .section-dark .video-title,
2273        .section-dark .news-title {
2274            color: var(--text-light);
2275        }
2276
2277        .streaming-links {
2278            display: flex;
2279            gap: 0.5rem;
2280            flex-wrap: wrap;
2281        }
2282
2283        .streaming-link {
2284            padding: 8px 15px;
2285            background: var(--saudi-green);
2286            color: white;
2287            text-decoration: none;
2288            border-radius: 20px;
2289            font-size: 0.8rem;
2290            font-weight: 600;
2291            transition: var(--transition);
2292            display: inline-block;
2293        }
2294
2295        .streaming-link:hover {
2296            background: var(--uae-red);
2297            transform: translateY(-2px);
2298        }
2299
2300        .view-all-btn {
2301            text-align: center;
2302            margin-top: 3rem;
2303        }
2304
2305        .view-all-btn a {
2306            display: inline-block;
2307            padding: 15px 35px;
2308            background: var(--uae-red);
2309            color: white;
2310            text-decoration: none;
2311            border-radius: 30px;
2312            font-weight: 700;
2313            transition: var(--transition);
2314        }
2315
2316        .view-all-btn a:hover {
2317            background: var(--saudi-green);
2318            transform: translateY(-3px);
2319        }
2320
2321        .loading-message {
2322            grid-column: 1 / -1;
2323            text-align: center;
2324            padding: 3rem;
2325            font-size: 1.2rem;
2326            color: #999;
2327        }
2328
2329        /* Bio Pages */
2330        .bio-page {
2331            display: none;
2332            min-height: 100vh;
2333            padding-top: 80px;
2334            background: var(--background-light);
2335        }
2336
2337        .bio-page.active {
2338            display: block;
2339        }
2340
2341        .bio-header {
2342            background: var(--gradient-main);
2343            padding: 3rem 0;
2344            color: white;
2345            text-align: center;
2346        }
2347
2348        .back-button {
2349            display: inline-block;
2350            padding: 10px 25px;
2351            background: rgba(255,255,255,0.2);
2352            color: white;
2353            text-decoration: none;
2354            border-radius: 25px;
2355            margin-bottom: 1rem;
2356            transition: var(--transition);
2357            font-weight: 600;
2358 
2358       }
2359
2360        .back-button:hover {
2361            background: rgba(255,255,255,0.3);
2362            transform: translateY(-2px);
2363        }
2364
2365        .bio-content {
2366            max-width: 1000px;
2367            margin: -50px auto 0;
2368            position: relative;
2369            z-index: 10;
2370            padding: 0 20px 60px;
2371        }
2372
2373        .bio-card {
2374            background: white;
2375            border-radius: 20px;
2376            overflow: hidden;
2377            box-shadow: var(--shadow-heavy);
2378        }
2379
2380        .bio-image-section {
2381            padding: 3rem;
2382            text-align: center;
2383            background: linear-gradient(135deg, #f0f8f4 0%, #fff5e6 100%);
2384        }
2385
2386        .bio-artist-image {
2387            width: 280px;
2388            height: 280px;
2389            border-radius: 50%;
2390            object-fit: cover;
2391            border: 6px solid white;
2392            box-shadow: var(--shadow-light);
2393        }
2394
2395        .bio-text-section {
2396            padding: 3rem;
2397        }
2398
2399        .bio-artist-title {
2400            text-align: center;
2401            margin-bottom: 2.5rem;
2402            padding-bottom: 2rem;
2403            border-bottom: 2px solid #f0f0f0;
2404        }
2405
2406        .bio-artist-title h1 {
2407            font-size: 2.8rem;
2408            margin-bottom: 0.8rem;
2409            font-family: 'Cairo', serif;
2410            color: var(--text-dark);
2411            font-weight: 800;
2412        }
2413
2414        .bio-artist-title .stage-name {
2415            font-size: 1.4rem;
2416            color: var(--uae-red);
2417            font-weight: 700;
2418            margin-bottom: 1rem;
2419        }
2420
2421        .bio-artist-title .role {
2422            display: inline-block;
2423            background: var(--saudi-green);
2424            color: white;
2425            padding: 10px 25px;
2426            border-radius: 25px;
2427            font-size: 1rem;
2428            font-weight: 700;
2429        }
2430
2431        .bio-description {
2432            line-height: 2;
2433            font-size: 1.1rem;
2434            color: var(--text-dark);
2435        }
2436
2437        .bio-description p {
2438            margin-bottom: 1.5rem;
2439            text-align: justify;
2440        }
2441
2442        /* Footer */
2443        .main-footer {
2444            background: var(--primary-color);
2445            color: var(--text-light);
2446            padding: 3rem 0 1rem;
2447            text-align: center;
2448        }
2449
2450        .social-links {
2451            display: flex;
2452            justify-content: center;
2453            gap: 1rem;
2454            margin-bottom: 2rem;
2455        }
2456
2457        .social-link {
2458            width: 50px;
2459            height: 50px;
2460            border-radius: 50%;
2461            background: var(--uae-red);
2462            color: var(--text-light);
2463            display: flex;
2464            align-items: center;
2465            justify-content: center;
2466            text-decoration: none;
2467            font-size: 1.2rem;
2468            transition: var(--transition);
2469        }
2470
2471        .social-link:hover {
2472            background: var(--gold);
2473            color: var(--primary-color);
2474            transform: translateY(-3px);
2475        }
2476
2477        @media (max-width: 768px) {
2478            .mobile-menu-toggle { display: block; }
2479            .nav-container { padding-right: 170px; }
2480            .lang-toggle { padding: 5px; }
2481            .lang-toggle button { padding: 6px 10px; font-size: 0.75rem; }
2482            .nav-menu {
2483                position: fixed;
2484                top: 70px;
2485                left: 0;
2486                right: 0;
2487                background: var(--primary-color);
2488                flex-direction: column;
2489                padding: 2rem;
2490                transform: translateY(-100%);
2491                opacity: 0;
2492                visibility: hidden;
2493                transition: var(--transition);
2494            }
2495            .nav-menu.active {
2496                transform: translateY(0);
2497                opacity: 1;
2498                visibility: visible;
2499            }
2500            .artists-gallery {
2501                grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
2502                gap: 1.5rem;
2503            }
2504            .releases-grid, .videos-grid, .news-grid {
2505                grid-template-columns: 1fr;
2506            }
2507            .bio-artist-image {
2508                width: 200px;
2509                height: 200px;
2510            }
2511            .bio-artist-title h1 {
2512                font-size: 2rem;
2513            }
2514            .bio-text-section {
2515                padding: 2rem 1.5rem;
2516            }
2517        }
2518    
2519    .ev-nw-badge{position:fixed;bottom:72px;right:20px;z-index:9999;display:inline-flex;align-items:center;gap:5px;padding:8px 14px;background:rgba(2,2,8,.9);border:1px solid rgba(255,255,255,.14);border-radius:100px;font-size:.68rem;font-weight:600;color:rgba(255,255,255,.55);text-decoration:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);letter-spacing:.06em;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}
2520.ev-nw-badge:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(2,2,8,.97)}
2521.ev-nw-badge-mark{width:14px;
2521height:14px;display:grid;grid-template-columns:1fr 1fr;gap:2px;flex-shrink:0}
2522.ev-nw-badge-mark span{background:currentColor;border-radius:2px;display:block}
2523  </style>
2524
2525<a href="https://echovira.com" class="ev-nw-badge" target="_blank" rel="noopener" title="EchoVira Music Network">
2526  <div class="ev-nw-badge-mark"><span></span><span></span><span></span><span></span></div>
2527  EchoVira
2528</a>
2529
2530<nav class="main-nav" id="mainNav">
2531    <div class="nav-container">
2532        <a href="#home" class="logo">
2533            <img src="https://media.echovira.com/echovira/bahira_logo.png" alt="Bahira بهيرة"
2534                srcset="https://media.echovira.com/echovira/bahira_logo-400.webp 400w, https://media.echovira.com/echovira/bahira_logo-800.webp 800w, https://media.echovira.com/echovira/bahira_logo-full.webp 1024w"
2535                sizes="50px" width="1024" height="1024" decoding="async">
2536        </a>
2537        <ul class="nav-menu" id="navMenu">
2538            <li class="lang-ar"><a href="#home">الرئيسية</a></li>
2539            <li class="lang-ar"><a href="#about">عن الفرقة</a></li>
2540            <li class="lang-ar"><a href="#artists">الفنانون</a></li>
2541            <li class="lang-ar"><a href="#releases">الإصدارات</a></li>
2542            <li class="lang-ar"><a href="#videos">الفيديوهات</a></li>
2543            <li class="lang-ar"><a href="#news">الأخبار</a></li>
2544            <li class="lang-en"><a href="#home">Home</a></li>
2545            <li class="lang-en"><a href="#about">About</a></li>
2546            <li class="lang-en"><a href="#artists">Artists</a></li>
2547            <li class="lang-en"><a href="#releases">Releases</a></li>
2548            <li class="lang-en"><a href="#videos">Videos</a></li>
2549            <li class="lang-en"><a href="#news">News</a></li>
2550        </ul>
2551        <button class="mobile-menu-toggle" id="mobileToggle">☰</button>
2552    </div>
2553<div class="lang-toggle">
2554        <button onclick="window.setLanguage&&setLanguage('ar')" class="lang-btn-ar active" data-lang="ar">العربية</button>
2555        <button onclick="window.setLanguage&&setLanguage('en')" class="lang-btn-en" data-lang="en">English</button>
2556    </div>
2557</nav>
2558
2559<span id="main-content" tabindex="-1"></span>
2560
2561<section class="hero-section" id="home">
2562    
2563    
2564    <div class="hero-content">
2565        <h1 class="hero-title">بهيرة Bahira</h1>
2566        <p class="hero-subtitle lang-ar">فرقة موسيقى عربية | موسيقى عربية أصيلة | دمج التقليد والحداثة | 12 فنان موهوب | إنتاج عالمي</p>
2567        <p class="hero-subtitle lang-en">Arabic Music Band | Authentic Arab Sound | Tradition Meets Innovation | 12 Talented Artists | International Production</p>
2568        <a href="#about" class="cta-button lang-ar">اكتشف موسيقانا</a>
2569        <a href="#about" class="cta-button lang-en">Discover Our Music</a>
2570    </div>
2571</section>
2572
2573<section class="section" id="about">
2574    <div class="container">
2575        <h2 class="section-title lang-ar">عن بهيرة</h2>
2576        <h2 class="section-title lang-en">About Bahira</h2>
2577        <div class="about-content">
2578            <p class="lang-ar">
2579                <strong>بهيرة (Bahira)</strong> — ليست مجرد فرقة موسيقية، بل هي صوت جيل جديد من <strong>الموسيقى العربية المستقلة</strong> و<strong>الروك البديل</strong>. نجمع بين <strong>الألحان العربية التقليدية</strong> و<strong>الآلات الشرقية الكلاسيكية</strong> مع <strong>الروك المستقل</strong>، <strong>البوب المعاصر</strong>، و<strong>الموسيقى التجريبية</strong> لخلق صوت فريد يتجاوز الحدود الثقافية ويلامس القلوب. موسيقى بهيرة هي حوار عميق بين التراث العربي الأصيل والابتكار الموسيقي العالمي.
2580            </p>
2581            <p class="lang-ar">
2582                تتكون الفرقة من 12 فنانًا موهوبًا — <strong>مطربون ومطربات</strong>، <strong>عازفون متعددو المواهب</strong>، <strong>ملحنون وكتّاب أغانٍ</strong>، و<strong>منتجون موسيقيون</strong> — يمثلون تنوع وإبداع <strong>الموسيقى العربية المعاصرة</strong>. نستلهم من <strong>الموسيقى الشعبية العربية</strong>، <strong>المقامات الشرقية</strong>، <strong>الشعر العربي الحديث</strong>، و<strong>الموسيقى المستقلة العالمية</strong> لإنتاج أعمال ذات <strong>جودة عالمية</strong> و<strong>هوية عربية أصيلة</strong>.
2583            </p>
2584            <p class="lang-ar">
2585                من <strong>الحفلات الحية</strong> و<strong>المهرجانات الموسيقية</strong> في مدن العالم العربي إلى إصدار <strong>الألبومات الرقمية</strong> و<strong>الأغاني الفردية</strong> على جميع منصات البث الموسيقي (Spotify، Apple Music، YouTube Music، Anghami، Deezer)، تبني بهيرة إرثًا موسيقيًا يحترم التراث العربي الغني ويحتضن الابتكار العالمي. بهيرة تعني البحيرة المضيئة — دافئة، عميقة، مليئة بالأمل والجمال.
2586            </p>
2587            
2588            <p class="lang-en">
2589                <strong>Bahira (بهيرة)</strong> — more than just a band, Bahira represents a new generation of <strong>independent Arabic music</strong> and <strong>alternative rock</strong>. We blend <strong>traditional Arabic melodies</strong> and <strong>classical Middle Eastern instruments</strong> with <strong>indie rock</strong>, <strong>contemporary pop</strong>, and <strong>experimental music</strong> to create a unique sound that transcends cultural boundaries and touches hearts. Bahira's music is a profou
2589nd dialogue between authentic Arab heritage and global musical innovation.
2590            </p>
2591            <p class="lang-en">
2592                The band consists of 12 talented artists — <strong>male and female singers</strong>, <strong>multi-instrumentalists</strong>, <strong>composers and lyricists</strong>, and <strong>music producers</strong> — representing the diversity and creativity of <strong>contemporary Arabic music</strong>. We draw inspiration from <strong>Arab folk music</strong>, <strong>Eastern maqamat</strong>, <strong>modern Arabic poetry</strong>, and <strong>international indie music</strong> to produce works with <strong>world-class quality</strong> and <strong>authentic Arab identity</strong>.
2593            </p>
2594            <p class="lang-en">
2595                From <strong>live concerts</strong> and <strong>music festivals</strong> across the Arab world to releasing <strong>digital albums</strong> and <strong>singles</strong> on all major streaming platforms (Spotify, Apple Music, YouTube Music, Anghami, Deezer), Bahira is building a musical legacy that honors rich Arab heritage while embracing global innovation. Bahira means luminous lake — warm, deep, filled with hope and beauty.
2596            </p>
2597        </div>
2598    </div>
2599</section>
2600
2601<section class="section section-dark" id="artists">
2602    <div class="container">
2603        <h2 class="section-title lang-ar">الفنانون</h2>
2604        <h2 class="section-title lang-en">The Artists</h2>
2605        <div class="artists-gallery" id="artistsGallery">
2606<div class="artist-card" data-artist-id="adel-khoury" style="cursor:pointer">
2607            <div class="artist-image-wrapper">
2608                <img src="https://media.echovira.com/bahira/bahira_adel_khoury_male_singer_portrait_2.png" alt="Adel Khoury" class="artist-image"
2609                srcset="https://media.echovira.com/bahira/bahira_adel_khoury_male_singer_portrait_2-400.webp 400w, https://media.echovira.com/bahira/bahira_adel_khoury_male_singer_portrait_2-800.webp 800w, https://media.echovira.com/bahira/bahira_adel_khoury_male_singer_portrait_2-full.webp 1024w"
2610                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
2611                <div class="artist-overlay">
2612                    <div class="artist-stage-name">Adel</div>
2613                    <div class="artist-role-badge lang-ar">مغني</div>
2614                    <div class="artist-role-badge lang-en">Male Singer</div>
2615                    <div class="artist-real-name lang-ar">عادل خوري • 23 عامًا</div>
2616                    <div class="artist-real-name lang-en">Adel Khoury • Age 23</div>
2617                </div>
2618            </div>
2619        </div><div class="artist-card" data-artist-id="amira-darwish" style="cursor:pointer">
2620            <div class="artist-image-wrapper">
2621                <img src="https://media.echovira.com/bahira/bahira_amira_darwish_female_singer_portrait_1.png" alt="Amira Darwish" class="artist-image"
2622                srcset="https://media.echovira.com/bahira/bahira_amira_darwish_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/bahira/bahira_amira_darwish_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/bahira/bahira_amira_darwish_female_singer_portrait_1-full.webp 1024w"
2623                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
2624                <div class="artist-overlay">
2625                    <div class="artist-stage-name">Amira</div>
2626                    <div class="artist-role-badge lang-ar">مغنية</div>
2627                    <div class="artist-role-badge lang-en">Female Singer</div>
2628                    <div class="artist-real-name lang-ar">أميرة درويش • 27 عامًا</div>
2629                    <div class="artist-real-name lang-en">Amira Darwish • Age 27</div>
2630                </div>
2631            </div>
2632        </div><div class="artist-card" data-artist-id="jana-rami" style="cursor:pointer">
2633            <div class="artist-image-wrapper">
2634                <img src="https://media.echovira.com/bahira/bahira_jana_rami_female_singer_portrait_0.png" alt="Jana Rami" class="artist-image"
2635                srcset="https://media.echovira.com/bahira/bahira_jana_rami_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_jana_rami_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_jana_rami_female_singer_portrait_0-full.
2635webp 1024w"
2636                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
2637                <div class="artist-overlay">
2638                    <div class="artist-stage-name">Jana</div>
2639                    <div class="artist-role-badge lang-ar">مغنية</div>
2640                    <div class="artist-role-badge lang-en">Female Singer</div>
2641                    <div class="artist-real-name lang-ar">جنى رامي • 26 عامًا</div>
2642                    <div class="artist-real-name lang-en">Jana Rami • Age 26</div>
2643                </div>
2644            </div>
2645        </div><div class="artist-card" data-artist-id="karim-mansour" style="cursor:pointer">
2646            <div class="artist-image-wrapper">
2647                <img src="https://media.echovira.com/bahira/bahira_karim_mansour_male_singer_portrait_0.png" alt="Karim Mansour" class="artist-image"
2648                srcset="https://media.echovira.com/bahira/bahira_karim_mansour_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_karim_mansour_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_karim_mansour_male_singer_portrait_0-full.webp 1024w"
2649                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
2650                <div class="artist-overlay">
2651                    <div class="artist-stage-name">Karim</div>
2652                    <div class="artist-role-badge lang-ar">مغني</div>
2653                    <div class="artist-role-badge lang-en">Male Singer</div>
2654                    <div class="artist-real-name lang-ar">كريم منصور • 24 عامًا</div>
2655                    <div class="artist-real-name lang-en">Karim Mansour • Age 24</div>
2656                </div>
2657            </div>
2658        </div><div class="artist-card" data-artist-id="layla-zaher" style="cursor:pointer">
2659            <div class="artist-image-wrapper">
2660                <img src="https://media.echovira.com/bahira/bahira_layla_zaher_female_singer_portrait_1.png" alt="Layla Zaher" class="artist-image"
2661                srcset="https://media.echovira.com/bahira/bahira_layla_zaher_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/bahira/bahira_layla_zaher_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/bahira/bahira_layla_zaher_female_singer_portrait_1-full.webp 1024w"
2662                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
2663                <div class="artist-overlay">
2664                    <div class="artist-stage-name">Layla</div>
2665                    <div class="artist-role-badge lang-ar">مغنية</div>
2666                    <div class="artist-role-badge lang-en">Female Singer</div>
2667                    <div class="artist-real-name lang-ar">ليلى زاهر • 25 عامًا</div>
2668                    <div class="artist-real-name lang-en">Layla Zaher • Age 25</div>
2669                </div>
2670            </div>
2671        </div><div class="artist-card" data-artist-id="maya-khalil" style="cursor:pointer">
2672            <div class="artist-image-wrapper">
2673                <img src="https://media.echovira.com/bahira/bahira_maya_khalil_female_singer_portrait_2.png" alt="Maya Khalil" class="artist-image"
2674                srcset="https://media.echovira.com/bahira/bahira_maya_khalil_female_singer_portrait_2-400.webp 400w, https://media.echovira.com/bahira/bahira_maya_khalil_female_singer_portrait_2-800.webp 800w, https://media.echovira.com/bahira/bahira_maya_khalil_female_singer_portrait_2-full.webp 1024w"
2675                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
2676                <div class="artist-overlay">
2677                    <div class="artist-stage-name">Maya</div>
2678                    <div class="artist-role-badge lang-ar">مغنية</div>
2679                    <div class="artist-role-badge lang-en">Female Singer</div>
2680                    <div class="artist-real-name lang-ar">مايا خليل • 24 عامًا</div>
2681                    <div class="artist-real-name lang-en">Maya Khalil • Age 24</div>
2682                </div>
2683            </div>
2684        </div><div class="artist-card" data-artist-id="nabil-faris" style="cursor:pointer">
2685            <div class="artist-image-wrapper">
2686                <img src="https://media.echovira.com/bahira/bahira_nabil_faris_male_singer_portrait_0.png" alt="Nabil Faris" class="artist-image"
2687                srcset="https://media.echovira.com/bahira/bahira_nabil_faris_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_nabil_faris_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_nabil_faris_male_singer_portrait_0-full.
2687webp 1024w"
2688                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
2689                <div class="artist-overlay">
2690                    <div class="artist-stage-name">Nabil</div>
2691                    <div class="artist-role-badge lang-ar">مغني</div>
2692                    <div class="artist-role-badge lang-en">Male Singer</div>
2693                    <div class="artist-real-name lang-ar">نبيل فرّيس • 27 عامًا</div>
2694                    <div class="artist-real-name lang-en">Nabil Faris • Age 27</div>
2695                </div>
2696            </div>
2697        </div><div class="artist-card" data-artist-id="noor-saidi" style="cursor:pointer">
2698            <div class="artist-image-wrapper">
2699                <img src="https://media.echovira.com/bahira/bahira_noor_saidi_female_singer_portrait_1.png" alt="Noor Saidi" class="artist-image"
2700                srcset="https://media.echovira.com/bahira/bahira_noor_saidi_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/bahira/bahira_noor_saidi_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/bahira/bahira_noor_saidi_female_singer_portrait_1-full.webp 1024w"
2701                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
2702                <div class="artist-overlay">
2703                    <div class="artist-stage-name">Noor</div>
2704                    <div class="artist-role-badge lang-ar">مغنية</div>
2705                    <div class="artist-role-badge lang-en">Female Singer</div>
2706                    <div class="artist-real-name lang-ar">نور سعيدي • 23 عامًا</div>
2707                    <div class="artist-real-name lang-en">Noor Saidi • Age 23</div>
2708                </div>
2709            </div>
2710        </div><div class="artist-card" data-artist-id="omar-haddad" style="cursor:pointer">
2711            <div class="artist-image-wrapper">
2712                <img src="https://media.echovira.com/bahira/bahira_omar_haddad_male_singer_portrait_0.png" alt="Omar Haddad" class="artist-image"
2713                srcset="https://media.echovira.com/bahira/bahira_omar_haddad_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_omar_haddad_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_omar_haddad_male_singer_portrait_0-full.webp 1024w"
2714                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
2715                <div class="artist-overlay">
2716                    <div class="artist-stage-name">Omar</div>
2717                    <div class="artist-role-badge lang-ar">مغني</div>
2718                    <div class="artist-role-badge lang-en">Male Singer</div>
2719                    <div class="artist-real-name lang-ar">عمر حداد • 25 عامًا</div>
2720                    <div class="artist-real-name lang-en">Omar Haddad • Age 25</div>
2721                </div>
2722            </div>
2723        </div><div class="artist-card" data-artist-id="ranya-suleiman" style="cursor:pointer">
2724            <div class="artist-image-wrapper">
2725                <img src="https://media.echovira.com/bahira/bahira_ranya_suleiman_multi_instrumentalist_portrait_0.png" alt="Ranya Suleiman" class="artist-image"
2726                srcset="https://media.echovira.com/bahira/bahira_ranya_suleiman_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_ranya_suleiman_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_ranya_suleiman_multi_instrumentalist_portrait_0-full.webp 1024w"
2727                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
2728                <div class="artist-overlay">
2729                    <div class="artist-stage-name">Ranya</div>
2730                    <div class="artist-role-badge lang-ar">عازفة آلات متعددة</div>
2731                    <div class="artist-role-badge lang-en">Multi-Instrumentalist</div>
2732                    <div class="artist-real-name lang-ar">رانيا سليمان • 25 عامًا</div>
2733                    <div class="artist-real-name lang-en">Ranya Suleiman • Age 25</div>
2734                </div>
2735            </div>
2736        </div><div class="artist-card" data-artist-id="salma-barakat" style="cursor:pointer">
2737            <div class="artist-image-wrapper">
2738                <img src="https://media.echovira.com/bahira/bahira_salma_barakat_composer_lyricist_portrait_0.png" alt="Salma Barakat" class="artist-image"
2739                srcset="https://media.echovira.com/bahira/bahira_salma_barakat_composer_lyricist_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_salma_barakat_composer_lyricist_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_salma_barakat_composer_lyricist_portrait_0-full.
2739webp 1024w"
2740                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
2741                <div class="artist-overlay">
2742                    <div class="artist-stage-name">Salma</div>
2743                    <div class="artist-role-badge lang-ar">ملحنة وكاتبة أغانٍ</div>
2744                    <div class="artist-role-badge lang-en">Composer & Lyricist</div>
2745                    <div class="artist-real-name lang-ar">سلمى بركات • 26 عامًا</div>
2746                    <div class="artist-real-name lang-en">Salma Barakat • Age 26</div>
2747                </div>
2748            </div>
2749        </div><div class="artist-card" data-artist-id="tariq-nasser" style="cursor:pointer">
2750            <div class="artist-image-wrapper">
2751                <img src="https://media.echovira.com/bahira/bahira_tariq_nasser_male_singer_portrait_0.png" alt="Tariq Nasser" class="artist-image"
2752                srcset="https://media.echovira.com/bahira/bahira_tariq_nasser_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_tariq_nasser_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_tariq_nasser_male_singer_portrait_0-full.webp 1024w"
2753                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
2754                <div class="artist-overlay">
2755                    <div class="artist-stage-name">Tariq</div>
2756                    <div class="artist-role-badge lang-ar">مغني</div>
2757                    <div class="artist-role-badge lang-en">Male Singer</div>
2758                    <div class="artist-real-name lang-ar">طارق ناصر • 26 عامًا</div>
2759                    <div class="artist-real-name lang-en">Tariq Nasser • Age 26</div>
2760                </div>
2761            </div>
2762        </div>
2763</div>
2764    </div>
2765</section>
2766
2767<section class="section" id="releases">
2768    <div class="container">
2769        <h2 class="section-title lang-ar">أحدث الإصدارات</h2>
2770        <h2 class="section-title lang-en">Latest Releases</h2>
2771        <div class="releases-grid" id="releasesGrid">
2772                <div class="release-card">
2773                    <div class="release-image">🎵</div>
2774                    <div class="release-info">
2775                        <h3 class="release-title lang-ar">بهيرة - الأغنية الأولى</h3>
2776                        <h3 class="release-title lang-en">Bahira - First Single</h3>
2777                        <p class="release-description lang-ar">استمع إلى موسيقى بهيرة على منصات التواصل الاجتماعي</p>
2778                        <p class="release-description lang-en">Listen to Bahira's music on social media platforms</p>
2779                        <div class="streaming-links">
2780                            <a href="https://www.youtube.com/@BahiraMusicBand" target="_blank" class="streaming-link">YouTube</a>
2781                            <a href="https://www.instagram.com/bahiramusicband/" target="_blank" class="streaming-link">Instagram</a>
2782                            <a href="https://www.tiktok.com/@bahiramusicband" target="_blank" class="streaming-link">TikTok</a>
2783                            <a href="https://facebook.com/BahiraMusicBand" target="_blank" class="streaming-link">Facebook</a>
2784                        </div>
2785                    </div>
2786                </div>
2787                <div class="release-card">
2788                    <div class="release-image">🎼</div>
2789                    <div class="release-info">
2790                        <h3 class="release-title lang-ar">تابعنا للإصدارات القادمة</h3>
2791                        <h3 class="release-title lang-en">Follow for Upcoming Releases</h3>
2792                        <p class="release-description lang-ar">كن أول من يسمع أغانينا الجديدة</p>
2793                        <p class="release-description lang-en">Be the first to hear our new tracks</p>
2794                        <div class="streaming-links">
2795                            <a href="https://www.instagram.com/bahiramusicband/" target="_blank" class="streaming-link">Instagram</a>
2796                            <a href="https://www.tiktok.com/@bahiramusicband" target="_blank" class="streaming-link">TikTok</a>
2797                        </div>
2798                    </div>
2799                </div>
2800            </div>
2801    </div>
2802</section>
2803
2804<section class="section section-dark" id="videos">
2805    <div class="container">
2806        <h2 class="section-title lang-ar">الفيديوهات الموسيقية</h2>
2807        <h2 class="section-title lang-en">Music Videos</h2>
2808        <div class="videos-grid" id="videosGrid">
2809        <div class="video-card">
2810            <div class="video-embed">📹</div>
2811            <div class="video-info">
2812                <h3 class="video-title lang-ar">بهيرة - فيديو موسيقي</h3>
2813                <h3 class="video-title lang-en">Bahira - Music Video</h3>
2814                <p class="lang-ar">شاهد أحدث فيديوهاتنا الموسيقية وأداءاتنا الحية على يوتيوب</p>
2815                <p class="lang-en">Watch our latest music videos and live performances on YouTube</p>
2816                <a href="https://www.youtube.com/@BahiraMusicBand" target="_blank" class="video-link lang-ar">شاهد على يوتيوب →</a>
2817                <a href="https://www.youtube.com/@BahiraMusicBand" target="_blank" class="video-link lang-en">Watch on YouTube →</a>
2818            </div>
2819        </div>
2820        <div class="video-card">
2821            <div class="video-embed">🎬</div>
2822            <div class="video-info">
2823                <h3 class="video-title lang-ar">فيديوهات قصيرة</h3>
2824                <h3 class="video-title lang-en">Short Videos</h3>
2825                <p class="lang-ar">تابع لحظاتنا خلف الكواليس ومقتطفات الأغاني على تيك توك وإنستغرام</p>
2826                <p class="lang-en">
2826Follow our behind-the-scenes moments and song clips on TikTok and Instagram</p>
2827                <a href="https://www.tiktok.com/@bahiramusicband" target="_blank" class="video-link lang-ar">شاهد على تيك توك →</a>
2828                <a href="https://www.tiktok.com/@bahiramusicband" target="_blank" class="video-link lang-en">Watch on TikTok →</a>
2829            </div>
2830        </div>
2831    </div>
2832        <div class="view-all-btn">
2833            <a href="https://www.youtube.com/@BahiraMusicBand" target="_blank" class="lang-ar">شاهد المزيد على يوتيوب</a>
2834            <a href="https://www.youtube.com/@BahiraMusicBand" target="_blank" class="lang-en">Watch More on YouTube</a>
2835        </div>
2836    </div>
2837</section>
2838
2839<section class="section" id="news">
2840    <div class="container">
2841        <h2 class="section-title lang-ar">آخر الأخبار</h2>
2842        <h2 class="section-title lang-en">Latest News</h2>
2843        <div class="news-grid" id="newsGrid">
2844        <div class="news-card">
2845            <div class="news-image">📰</div>
2846            <div class="news-content">
2847                <h3 class="news-title lang-ar">مرحبًا بكم في عالم بهيرة</h3>
2848                <h3 class="news-title lang-en">Welcome to Bahira's World</h3>
2849                <p class="news-excerpt lang-ar">تابعنا على وسائل التواصل الاجتماعي لآخر الأخبار والتحديثات عن الفرقة والإصدارات القادمة والحفلات الحية</p>
2850                <p class="news-excerpt lang-en">Follow us on social media for the latest news, updates about the band, upcoming releases, and live concerts</p>
2851                <a href="https://www.instagram.com/bahiramusicband/" target="_blank" class="read-more lang-ar">تابعنا على إنستغرام →</a>
2852                <a href="https://www.instagram.com/bahiramusicband/" target="_blank" class="read-more lang-en">Follow on Instagram →</a>
2853            </div>
2854        </div>
2855        <div class="news-card">
2856            <div class="news-image">🎤</div>
2857            <div class="news-content">
2858                <h3 class="news-title lang-ar">تعرف على الفنانين</h3>
2859                <h3 class="news-title lang-en">Meet the Artists</h3>
2860                <p class="news-excerpt lang-ar">اكتشف قصص فنانينا الـ 12 وشاهد لحظاتهم من التدريبات والحفلات على صفحاتنا</p>
2861                <p class="news-excerpt lang-en">Discover the stories of our 12 artists and watch their rehearsal and concert moments on our pages</p>
2862                <a href="https://facebook.com/BahiraMusicBand" target="_blank" class="read-more lang-ar">زر صفحتنا →</a>
2863                <a href="https://facebook.com/BahiraMusicBand" target="_blank" class="read-more lang-en">Visit Our Page →</a>
2864            </div>
2865        </div>
2866    </div>
2867    </div>
2868</section>
2869
2870<footer class="main-footer">
2871    <div class="container">
2872        <div class="social-links">
2873            <a href="https://www.youtube.com/@BahiraMusicBand" target="_blank" class="social-link">▶</a>
2874            <a href="https://www.instagram.com/bahiramusicband/" target="_blank" class="social-link">📷</a>
2875            <a href="https://www.tiktok.com/@bahiramusicband" target="_blank" class="social-link">🎵</a>
2876            <a href="https://facebook.com/BahiraMusicBand" target="_blank" class="social-link">👥</a>
2877        </div>
2878        <p class="lang-ar">&copy; 2025 بهيرة Bahira. جميع الحقوق محفوظة.</p>
2879        <p class="lang-en">&copy; 2025 Bahira. All rights reserved.</p>
2880    </div>
2881</footer>
2882
2883
2884
2885
2886<div id="bioPages">
2887<div id="bio-adel-khoury" class="bio-page">
2888            <div class="bio-header">
2889                <div class="container">
2890                    <a href="#artists" data-action="back" class="back-button lang-ar">→ العودة إلى الفنانين</a>
2891                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
2892                </div>
2893            </div>
2894            
2895            <div class="bio-content">
2896                <div class="bio-card">
2897                    <div class="bio-image-section">
2898                        <img src="https://media.echovira.com/bahira/bahira_adel_khoury_male_singer_portrait_2.png" alt="Adel Khoury" class="bio-artist-image"
2899                srcset="https://media.echovira.com/bahira/bahira_adel_khoury_male_singer_portrait_2-400.webp 400w, https://media.echovira.com/bahira/bahira_adel_khoury_male_singer_portrait_2-800.webp 800w, https://media.echovira.com/bahira/bahira_adel_khoury_male_singer_portrait_2-full.webp 1024w"
2900                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
2901                    </div>
2902                    <div class="bio-text-section">
2903                        <div class="bio-artist-title">
2904                            <h1 class="lang-ar">عادل خوري</h1>
2905                            <h1 class="lang-en">Adel Khoury</h1>
2906                            <div class="stage-name">"Adel" • 23 عامًا / Age 23</div>
2907                            <div class="role lang-ar">مغني</div>
2908                            <div class="role lang-en">Male Singer</div>
2909                        </div>
2910                        <div class="bio-description lang-ar">
2911                            <p>تعرفوا على عادل (Adel Khoury)، المغني الشاب لفرقة بهيرة — 23 عاماً، صوت لعوب ناعم وحضور خفيف ومشرق. صوته يجمع بين النعومة والمرح ويمنح ألحان الفرقة دفءً وحيوية ترفع تجربة الاستماع.</p><p>كمطرب رئيسي في بهيرة، يتميز عادل بطبقة صوتية دافئة وخفيفة قليلاً، ومدى مرن يجلب نغمات عالية مشرقة ولحظات حميمة منخفضة. الصياغة الدقيقة والسيطرة الديناميكية، مع الإشارات إلى البوب المستقل والموسيقى الشعبية الإقليمية، تشكل الهوية اللحنية للفرقة.</p><p>في التسجيلات، تشكل خياراته الصوتية التوزيعات، وفي الحفلات الحية يحول أسلوبه المرح والحضور المتواضع المقاطع الهادئة إلى أبرز ما يتم غناؤه مما يرفع الفرقة بأكملها. استمع إلى أحدث مقطوعات بهيرة لتسمع كيف يلون عادل كل أغنية — متوفر الآن على منصات البث المفضلة لديك.</p>
2912                        </div>
2913                        <div class="bio-description lang-en">
2914                            <p>Meet Adel (Adel Khoury), Bahira's 23-year-old male singer — a playful, smooth voice with a light, bright presence. His vocals blend warmth and energy, shaping the band's sound and bringing every melody to life.</p><p>As Bahira's lead vocalist, his warm, slightly airy timbre and flexible range bring bright top notes and intimate low moments; precise phrasing and dynamic control, with nods to indie-pop and regional folk, shape the band's melodic identity.</p><p>On record his vocal choices steer arrangements, and live his playful delivery and understated presence turns soft passages into sing-along highlights that lift the whole band. Listen to Bahira's recent tracks to hear how Adel colors each song — streaming now on your favorite platforms.</p>
2915                        </div>
2916                    </div>
2917                </div>
2918            </div>
2919        </div>
2920<div id="bio-amira-darwish" class="bio-page">
2921            <div class="bio-header">
2922                <div class="container">
2923                    <a href="#artists" data-action="back" class="back-button lang-ar">→ العودة إلى الفنانين</a>
2924                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
2925                </div>
2926            </div>
2927            
2928            <div class="bio-content">
2929                <div class="bio-card">
2930                    <div class="bio-image-section">
2931                        <img src="https://media.echovira.com/bahira/bahira_amira_darwish_female_singer_portrait_1.png" alt="Amira Darwish" class="bio-artist-image"
2932                srcset="https://media.echovira.com/bahira/bahira_amira_darwish_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/bahira/bahira_amira_darwish_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/bahira/bahira_amira_darwish_female_singer_portrait_1-full.
2932webp 1024w"
2933                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
2934                    </div>
2935                    <div class="bio-text-section">
2936                        <div class="bio-artist-title">
2937                            <h1 class="lang-ar">أميرة درويش</h1>
2938                            <h1 class="lang-en">Amira Darwish</h1>
2939                            <div class="stage-name">"Amira" • 27 عامًا / Age 27</div>
2940                            <div class="role lang-ar">مغنية</div>
2941                            <div class="role lang-en">Female Singer</div>
2942                        </div>
2943                        <div class="bio-description lang-ar">
2944                            <p>تعرفوا على أميرة درويش — أميرة، صوت فرقة بهيرة، مغنية بالاد ذات رنين عميق وعاطفي، بعمر 27 عاماً. صوتها الدافئ والرصين يلون هوية الفرقة ويمنح ألحان بهيرة طاقة وحسّ أصيل، مع قدرة على التنقل بين الهمس الحنون والانفجار المسرحي.</p><p>تمتلك أميرة طبقة صوتية دافئة ومدى تعبيري واسع وصياغة دقيقة وسيطرة ديناميكية ترسخ صوت بهيرة. على المسرح، يحول حضورها المركز اللحظات الهادئة إلى اتصال قوي. تستمد الألوان الأسلوبية من الموسيقى الشعبية الإقليمية والبالاد المعاصرة.</p><p>هذا المزيج يشكل توزيعات الفرقة ويرفع الطاقة الحية من الهمسات الحميمة إلى الذروات الكاسحة. استمع إلى أحدث أغانيها الفردية ومقاطع الفيديو الحية لتسمع كيف توجه كل أغنية بالعاطفة. استعدوا للأغاني القادمة التي تكشف عن مواهبها الحقيقية.</p>
2945                        </div>
2946                        <div class="bio-description lang-en">
2947                            <p>Meet Amira Darwish — Amira, the 27-year-old voice of Bahira, a soulful ballad singer with deep resonance. Her warm, emotive timbre shapes the band's sound, moving from intimate whispers to powerful climaxes and bringing sincere energy to every track.</p><p>Her warm timbre, wide expressive range, careful phrasing and dynamic control anchor Bahira's sound. On stage, her focused presence turns quiet moments into powerful connection. She draws stylistic colors from regional folk and contemporary balladry.</p><p>That blend shapes the band's arrangements and lifts live energy from intimate hushes to sweeping climaxes. Listen to her recent singles and live videos to hear how she steers each song's emotion. Get ready for new releases that showcase her vocal depth.</p>
2948                        </div>
2949                    </div>
2950                </div>
2951            </div>
2952        </div>
2953<div id="bio-jana-rami" class="bio-page">
2954            <div class="bio-header">
2955                <div class="container">
2956                    <a href="#artists" data-action="back" class="back-button lang-ar">→ العودة إلى الفنانين</a>
2957                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
2958                </div>
2959            </div>
2960            
2961            <div class="bio-content">
2962                <div class="bio-card">
2963                    <div class="bio-image-section">
2964                        <img src="https://media.echovira.com/bahira/bahira_jana_rami_female_singer_portrait_0.png" alt="Jana Rami" class="bio-artist-image"
2965                srcset="https://media.echovira.com/bahira/bahira_jana_rami_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_jana_rami_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_jana_rami_female_singer_portrait_0-full.webp 1024w"
2966                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
2967                    </div>
2968                    <div class="bio-text-section">
2969                        <div class="bio-artist-title">
2970                            <h1 class="lang-ar">جنى رامي</h1>
2971                            <h1 class="lang-en">Jana Rami</h1>
2972                            <div class="stage-name">"Jana" • 26 عامًا / Age 26</div>
2973                            <div class="role lang-ar">مغنية</div>
2974                            <div class="role lang-en">Female Singer</div>
2975                        </div>
2976                        <div class="bio-description lang-ar">
2977                            <p>تعرفوا على جنى (جنى رامي) — صوت ميزو قوي وساحر وعمرها 26 سنة، حضورها على المسرح يأسر القلوب ويقÙ
2977ˆØ¯ فرقة بهيرة. كمطربة، تتميز بنبرة دافئة وملحمية وطاقة تنفجر في كل نغمة، مما يضيف عمقًا إضافيًا لصوت الفرقة.</p><p>صوت جنى الميزو القوي وحضورها المسرحي المركز هما في قلب صوت الفرقة. طبقة صوتها الدافئة والمدخنة، ومدى الميزو الواسع، والصياغة الدقيقة والسيطرة الديناميكية تجلب الفروق الدقيقة لكل أغنية، مستمدة من الموسيقى الشعبية العربية والسول المعاصرة.</p><p>على المسرح تعيد تشكيل التوزيعات — تحول الإيقاعات إلى لحظات درامية، وتوسع الأنسجة وتوجه الفرقة نحو كورسات أكثر جرأة. صياغتها تجعل الكلمات تبدو فورية، موازنة بين الشعور الخام والتقنية المصقولة. قريبًا سنكشف عن أعمال جديدة تُبرز موهبتها وتوسع ألوان بهيرة.</p>
2978                        </div>
2979                        <div class="bio-description lang-en">
2980                            <p>Meet Jana (Jana Rami) — a 26-year-old powerhouse mezzo with a commanding stage presence, the female voice at the heart of Bahira. Her warm, powerful tone, cinematic phrasing and electric energy shape the band's sound, turning each song into a vivid musical journey.</p><p>Jana's powerful mezzo voice and focused stage presence are at the heart of the band's sound. Her warm, smoky timbre, wide mezzo range, precise phrasing and dynamic control bring nuance to every song, drawing on Arabic folk and contemporary soul influences.</p><p>On stage she reshapes arrangements—turning grooves into dramatic moments, widening textures and steering the band toward bolder choruses. Her phrasing makes lyrics feel immediate, balancing raw feeling with refined technique. Excited for the new releases that showcase Jana's vocal artistry.</p>
2981                        </div>
2982                    </div>
2983                </div>
2984            </div>
2985        </div>
2986<div id="bio-karim-mansour" class="bio-page">
2987            <div class="bio-header">
2988                <div class="container">
2989                    <a href="#artists" data-action="back" class="back-button lang-ar">→ العودة إلى الفنانين</a>
2990                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
2991                </div>
2992            </div>
2993            
2994            <div class="bio-content">
2995                <div class="bio-card">
2996                    <div class="bio-image-section">
2997                        <img src="https://media.echovira.com/bahira/bahira_karim_mansour_male_singer_portrait_0.png" alt="Karim Mansour" class="bio-artist-image"
2998                srcset="https://media.echovira.com/bahira/bahira_karim_mansour_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_karim_mansour_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_karim_mansour_male_singer_portrait_0-full.webp 1024w"
2999                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
3000                    </div>
3001                    <div class="bio-text-section">
3002                        <div class="bio-artist-title">
3003                            <h1 class="lang-ar">كريم منصور</h1>
3004                            <h1 class="lang-en">Karim Mansour</h1>
3005                            <div class="stage-name">"Karim" • 24 عامًا / Age 24</div>
3006                            <div class="role lang-ar">مغني</div>
3007                            <div class="role lang-en">Male Singer</div>
3008                        </div>
3009                        <div class="bio-description lang-ar">
3010                            <p>نقدّم كريم منصور (الاسم الفني Karim) — المغني الذكر لفرقة بهيرة، 24 عاماً، بصوت شبابي، نشيط وساحر. صوته الشاب والطاقة والحضور المسرحي يضيفون لوناً خاصاً لصوت الفرقة ويمنحون الأغاني روحاً جديدة.</p><p>طبقة صوت كريم مشرقة بمدى مرن، وصياغة دقيقة وسيطرة ديناميكية، مستمداً من البوب والموسيقى المستقلة والألحان الإقليمية لإعطاء وضوح عاطفي على المسرح. صوت كريم هو مرساة الفرقة — يشكل التوزيعات، ويرفع الكورسات ويغذي طاقة بهيرة الحية وزخم الجمهور.</p><p>تحقق من أحدث إصدارات الفرقة ومقاطع الفيديو الحية لتسمع كيف يحول صوته كل أغنية. استعدوا للأغاني القادمة التي ستبرز نطاقه الصوتي وكاريزمته — تابعونا وشاركوا رأيكم واتركوا تعليقاتكم!</p>
3011                        </div>
3012                        <div class="bio-description lang-en">
3013                            <p>Meet Karim Mansour (stage name: Karim) — the male singer of Bahira, 24 years old, with a youthful, energetic and charming voice that lights up the band's sound. His vibrant tone and stage energy add a fresh color to Bahira's music.</p><p>His timbre is bright with a flexible range, precise phrasing and dynamic control, drawing on pop, indie and regional melodies to give emotional clarity on stage. Karim's voice is the band's anchor—shaping arrangements, lifting choruses and fueling Bahira's live energy and crowd momentum.</p><p>Check out the band's latest releases and live clips to hear how his voice transforms each song. Don't miss the new tracks that showcase his vocal range and charisma — follow, comment and share to supp
3013ort Karim and Bahira!</p>
3014                        </div>
3015                    </div>
3016                </div>
3017            </div>
3018        </div>
3019<div id="bio-layla-zaher" class="bio-page">
3020            <div class="bio-header">
3021                <div class="container">
3022                    <a href="#artists" data-action="back" class="back-button lang-ar">→ العودة إلى الفنانين</a>
3023                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
3024                </div>
3025            </div>
3026            
3027            <div class="bio-content">
3028                <div class="bio-card">
3029                    <div class="bio-image-section">
3030                        <img src="https://media.echovira.com/bahira/bahira_layla_zaher_female_singer_portrait_1.png" alt="Layla Zaher" class="bio-artist-image"
3031                srcset="https://media.echovira.com/bahira/bahira_layla_zaher_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/bahira/bahira_layla_zaher_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/bahira/bahira_layla_zaher_female_singer_portrait_1-full.webp 1024w"
3032                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
3033                    </div>
3034                    <div class="bio-text-section">
3035                        <div class="bio-artist-title">
3036                            <h1 class="lang-ar">ليلى زاهر</h1>
3037                            <h1 class="lang-en">Layla Zaher</h1>
3038                            <div class="stage-name">"Layla" • 25 عامًا / Age 25</div>
3039                            <div class="role lang-ar">مغنية</div>
3040                            <div class="role lang-en">Female Singer</div>
3041                        </div>
3042                        <div class="bio-description lang-ar">
3043                            <p>تعرفوا على ليلى زاهر — ليلى، المغنية الشابة (25 عامًا) وصوت فرقة بهيرة: الديفا ذات النطاق العاطفي الواسع التي تأسر القلوب بصوتها الفريد. صوتها الدافئ والقوي، أسلوبها الحسي، وطاقة أدائها تحوّل كل لحن إلى تجربة حية ترفع هوية بهيرة الموسيقية.</p><p>مطربة آمرة بنطاق عاطفي مرتفع. طبقة صوتها الدافئة والعسلية ومداها الواسع يتيحان لها الانتقال من الصياغة الحميمة والتنفسية إلى الذروات القوية في السجل العالي. تستخدم الصياغة الدقيقة والديناميكيات الدقيقة لتشكيل كل سطر، مستمدة من التأثيرات من الألحان الإقليمية وأنسجة البوب جاز المعاصرة.</p><p>على المسرح تقود صوت بهيرة — تحول المقاطع الهادئة إلى لحظات حميمة وتطلق الكورسات في كاثارسيس كامل للفرقة. مساهمتها الصوتية توازن بين الحنان والقوة، وتمنح الفرقة طابعها المميز على الساحة. استعدوا لأغاني جديدة قريبًا تُبرز تطوّرها الصوتي.</p>
3044                        </div>
3045                        <div class="bio-description lang-en">
3046                            <p>Meet Layla Zaher — Layla, the 25-year-old lead singer of Bahira: the diva with a soaring emotional range who captivates every listener with her distinctive voice. Her warm yet powerful tone, emotive vocal style, and stage energy turn every melody into a living experience that elevates Bahira's sound.</p><p>A commanding vocalist with a soaring emotional range. Her warm, honeyed timbre and wide range let her move from intimate, breathy phrasing to powerful high-register climaxes. She uses precise phrasing and subtle dynamics to shape each line, drawing on influences from regional melodies and contemporary pop-jazz textures.</p><p>Onstage she drives Bahira's sound — turning quiet passages into intimate moments and launching choruses into full-band catharsis. Her vocal contribution balances tenderness and strength, giving the band its unique character. New music is coming soon to showcase her vocal growth.</p>
3047                        </div>
3048                    </div>
3049                </div>
3050            </div>
3051        </div>
3052<div id="bio-maya-khalil" class="bio-page">
3053            <div class="bio-header">
3054                <div class="container">
3055                    <a href="#artists" data-action="back" class="back-button lang-ar">→ العودة إلى الفنانين</a>
3056                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
3057                </div>
3058            </div>
3059            
3060            <div class="bio-content">
3061                <div class="bio-card">
3062                    <div class="bio-image-section">
3063                        <img src="https://media.echovira.com/bahira/bahira_maya_khalil_female_singer_portrait_2.png" alt="Maya Khalil" class="bio-artist-image"
3064                srcset="https://media.echovira.com/bahira/bahira_maya_khalil_female_singer_portrait_2-400.webp 400w, https://media.echovira.com/bahira/bahira_maya_khalil_female_singer_portrait_2-800.webp 800w, https://media.echovira.com/bahira/bahira_maya_khalil_female_singer_portrait_2-full.webp 1024w"
3065                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
3066                    </div>
3067                    <div class="bio-text-section">
3068                        <div class="bio-artist-title">
3069                            <h1 class="lang-ar">مايا خليل</h1>
3070                            <h1 class="lang-en">Maya Khalil</h1>
3071                            <div class="stage-name">"Maya" • 24 عامًا / Age 24</div>
3072                            <div class="role lang-ar">مغنية</div>
3073                            <div class="role lang-en">Female Singer</div>
3074                        </div>
3075                        <div class="bio-description lang-ar">
3076                            <p>تعرفوا على مايا (مايا خليل)، المغنية الشابة لفرقة بهيرة — 24 سنة، بصوتٍ حلو، دافئ وقريب من القلب. صوتها الحلو وحضورها الطاقي يضفيان دفءً ولونًا فريدًا على صوت الفرقة، ونحن متحمسون لموسيقى جديدة تُظهر مواهبها الغنائية قريبًا.</p><p>مايا عمرها 24 عاماً وتقدم صوتاً دافئاً وقريباً. كمطربة رئيسية للفرقة، فإن طبقة صوتها الحريرية ومداها المرن وصياغتها الدقيقة وسيطرتها الديناميكية تشكل صوت بهيرة وترفع الطاقة الحية، مستمدة من ألوان البوب والبلوز.</p><p>على المسرح يعزز حضورها الطاقة الحية للفرقة. استكشف أحدث مقطوعاتها، رحب بمايا وشارك لحظتك المفضلة. تابعونا واستمعوا وشاركونا رأيكم — ضعوا لايك وعلّقوا لدعمها وتشجيع رحلتها الفنية!</p>
3077                        </div>
3078                        <div class="bio-description lang-en">
3079                            <p>Meet Maya (Maya Khalil), the 24-year-old female singer of Bahira — the sweet, warm and approachable voice shaping the band's sound. Her vocal tone and stage energy add a unique color to Bahira, and we can't wait to release new music that highlights her style and passion.</p><p>She's 24 and brings a warm, approachable voice. As the band's lead singer, her silken timbre, flexible range, precise phrasing and dynamic control shape Bahira's sound and lift the live energy, drawing on pop and blues colors.</p><p>Onstage her presence shapes the band's live energy. Explore her recent tracks, welcome Maya, tell us 
3079your favorite moment. Listen, follow and leave a comment to support Maya's journey!</p>
3080                        </div>
3081                    </div>
3082                </div>
3083            </div>
3084        </div>
3085<div id="bio-nabil-faris" class="bio-page">
3086            <div class="bio-header">
3087                <div class="container">
3088                    <a href="#artists" data-action="back" class="back-button lang-ar">→ العودة إلى الفنانين</a>
3089                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
3090                </div>
3091            </div>
3092            
3093            <div class="bio-content">
3094                <div class="bio-card">
3095                    <div class="bio-image-section">
3096                        <img src="https://media.echovira.com/bahira/bahira_nabil_faris_male_singer_portrait_0.png" alt="Nabil Faris" class="bio-artist-image"
3097                srcset="https://media.echovira.com/bahira/bahira_nabil_faris_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_nabil_faris_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_nabil_faris_male_singer_portrait_0-full.webp 1024w"
3098                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
3099                    </div>
3100                    <div class="bio-text-section">
3101                        <div class="bio-artist-title">
3102                            <h1 class="lang-ar">نبيل فرّيس</h1>
3103                            <h1 class="lang-en">Nabil Faris</h1>
3104                            <div class="stage-name">"Nabil" • 27 عامًا / Age 27</div>
3105                            <div class="role lang-ar">مغني</div>
3106                            <div class="role lang-en">Male Singer</div>
3107                        </div>
3108                        <div class="bio-description lang-ar">
3109                            <p>نقدّم نبيل فرّيس (Nabil) — صوت فرقة بهيرة: بارِتون دافئ وعميق، ركيزة تُعطي أغانينا الوزن والروح. عمره 27 عامًا، بصوته الدافئ والطاقة المسرحية يربط بين الأنغام والمشاعر ليصنع توقيعًا موسيقيًا مميزًا لبهيرة.</p><p>مرساة بارِتون، صوته العميق الدافئ يرسخ ألحان الفرقة ويقود نبضها الحي. في التسجيل وعلى المسرح يثبت التوزيعات بنغمات منخفضة وصياغة واضحة وديناميكيات عاطفية ترفع الكورسات وتشدد الإيقاعات. يشكل صوت بهيرة بالتزامن مع قسم الإيقاع ونحت مساحة للألوان الآلية.</p><p>توازنه بين ضبط النفس والشدة أساسي في طاقة الفرقة الحية. طبقة صوته غنية عبر مدى باريتون واسع؛ الصياغة الدقيقة، والتظليل الديناميكي الدقيق، والحضور المسرحي الآمر تعكس التأثيرات من الموسيقى الشعبية العربية والسول المعاصر. ترقّبوا الأعمال الجديدة التي ستعرض قدراته الصوتية والتعبيرية.</p>
3110                        </div>
3111                        <div class="bio-description lang-en">
3112                            <p>Meet Nabil Faris (Nabil) — the baritone anchor of Bahira: deep, warm vocals and an energy that roots the band's sound. At 27, his rich tone and expressive delivery bridge melody and emotion, shaping Bahira's signature vibe and elevating every arrangement.</p><p>A baritone anchor, his deep warm voice anchors the band's melodies and drives its live pulse. On record and on stage he steadies arrangements with low tones, clear phrasing, and emotive dynamics that lift choruses and tighten grooves. He shapes Bahira's sound by locking with the rhythm section and carving space for instrumental colors.</p><p>That balance between restraint and intensity is central to the band's live energy. His timbre sits rich across a wide baritone range; precise phrasing, subtle dynamic shading, and a commanding stage presence reflect influences from Arabic folk and contemporary soul. Get ready for upcoming releases that showcase his range and storytelling.</p>
3113                        </div>
3114                    </div>
3115                </div>
3116            </div>
3117        </div>
3118<div id="bio-noor-saidi" class="bio-page">
3119            <div class="bio-header">
3120                <div class="container">
3121                    <a href="#artists" data-action="back" class="back-button lang-ar">→ العودة إلى الفنانين</a>
3122                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
3123                </div>
3124            </div>
3125            
3126            <div class="bio-content">
3127                <div class="bio-card">
3128                    <div class="bio-image-section">
3129                        <img src="https://media.echovira.com/bahira/bahira_noor_saidi_female_singer_portrait_1.png" alt="Noor Saidi" class="bio-artist-image"
3130                srcset="https://media.echovira.com/bahira/bahira_noor_saidi_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/bahira/bahira_noor_saidi_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/bahira/bahira_noor_saidi_female_singer_portrait_1-full.
3130webp 1024w"
3131                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
3132                    </div>
3133                    <div class="bio-text-section">
3134                        <div class="bio-artist-title">
3135                            <h1 class="lang-ar">نور سعيدي</h1>
3136                            <h1 class="lang-en">Noor Saidi</h1>
3137                            <div class="stage-name">"Noor" • 23 عامًا / Age 23</div>
3138                            <div class="role lang-ar">مغنية</div>
3139                            <div class="role lang-en">Female Singer</div>
3140                        </div>
3141                        <div class="bio-description lang-ar">
3142                            <p>تعرفوا على نور (Noor Saidi)، صوت فرقة بهيرة — مغنية شابة 23 سنة بصوت مشرق ومرح يضيء ألحاننا. صوتها واضح ومرن، طاقة حية وأداء يُحمّس القلوب ويعطي للفرقة طابعًا عربيًا معاصرًا.</p><p>مغنية مرحة صوتها المشرق والرنان يجلب الدفء والحيوية لكل عبارة. صوتها يعيد تشكيل صوت بهيرة، يرفع التوزيعات بنغمات عالية واضحة ويضيف للمجموعات الحية طاقة معدية تحول اللحظات الهادئة إلى أغانٍ جماعية.</p><p>كمطربة، تقدم نور طبقة صوت مضيئة، ومدى مرن، وصياغة معبرة، وديناميكيات دقيقة، وحضور مسرحي واثق تشكله البوب المستقلة والألحان الإقليمية. هذا المزيج يشدد تباينات الفرقة، يلون التوزيعات، ويضخم اتصال الجمهور. انتظروا مقتطفات أغانينا القادمة حيث ستتألّق مهارات نور.</p>
3143                        </div>
3144                        <div class="bio-description lang-en">
3145                            <p>Meet Noor (Noor Saidi), Bahira's 23-year-old singer — a playful, bright vocalist whose voice lights up our melodies. Her clear, flexible tone and lively energy shape the band's contemporary Arabic sound and bring every song to life.</p><p>A playful singer whose bright, resonant vocals bring warmth and bounce to every phrase. Her voice reshapes Bahira's sound, lifting arrangements with clear high tones and adding live sets a contagious energy that turns quiet moments into sing-alongs.</p><p>As a vocalist, Noor offers a luminous timbre, flexible range, expressive phrasing, nuanced dynamics, and a confident stage presence shaped by indie pop and regional melodies. That blend tightens the band's contrasts, colors the arrangements, and amplifies audience connection. Get ready for upcoming releases that showcase Noor's vocal flair.</p>
3146                        </div>
3147                    </div>
3148                </div>
3149            </div>
3150        </div>
3151<div id="bio-omar-haddad" class="bio-page">
3152            <div class="bio-header">
3153                <div class="container">
3154                    <a href="#artists" data-action="back" class="back-button lang-ar">→ العودة إلى الفنانين</a>
3155                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
3156                </div>
3157            </div>
3158            
3159            <div class="bio-content">
3160                <div class="bio-card">
3161                    <div class="bio-image-section">
3162                        <img src="https://media.echovira.com/bahira/bahira_omar_haddad_male_singer_portrait_0.png" alt="Omar Haddad" class="bio-artist-image"
3163                srcset="https://media.echovira.com/bahira/bahira_omar_haddad_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_omar_haddad_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_omar_haddad_male_singer_portrait_0-full.webp 1024w"
3164                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
3165                    </div>
3166                    <div class="bio-text-section">
3167                        <div class="bio-artist-title">
3168                            <h1 class="lang-ar">عمر حداد</h1>
3169                            <h1 class="lang-en">Omar Haddad</h1>
3170                            <div class="stage-name">"Omar" • 25 عامًا / Age 25</div>
3171                            <div class="role lang-ar">مغني</div>
3172                            <div class="role lang-en">Male Singer</div>
3173                        </div>
3174                        <div class="bio-description lang-ar">
3175                            <p>تعرفوا على عمر حداد — Omar، المغني الرئيسي لفرقة بهيرة: صوت قوي وحØ
3175¶ÙˆØ± ساحر في عمر 25 عاماً. بصوته الدافئ والقوي وأسلوب غنائي يعانق المشاعر، هو الكاريزما التي تدفع ألحان بهيرة للأمام.</p><p>المطرب الكاريزمي الذي يقود صوته القوي وحضوره المغناطيسي صوت بهيرة. نبرة صوته وصياغته الديناميكية تشكل ألحان الفرقة وتدفع التوزيعات إلى أراضٍ أكثر جرأة. على المسرح يرفع حضوره الطاقة الحية، محولاً الأغاني إلى لحظات جماعية تتواصل مع الجمهور.</p><p>كمطرب يمزج طبقة صوت دافئة ورنانة ومدى واسع مع صياغة دقيقة، وديناميكيات رشيقة، وتأثيرات من البوب العربي والروك المستقل. استعدوا لأغانٍ جديدة قريباً تُظهر طاقته وصوته المهيمن على المسرح والاستوديو.</p>
3176                        </div>
3177                        <div class="bio-description lang-en">
3178                            <p>Meet Omar Haddad — Omar, the 25-year-old male singer and charismatic frontman of Bahira: a powerful voice with magnetic presence. His warm yet commanding tone, dynamic vocal style and raw energy shape Bahira's sound and push our music to new heights.</p><p>A charismatic frontman whose powerful voice and magnetic presence lead Bahira's sound. His vocal tone and dynamic phrasing shape the band's melodies and push arrangements into bolder territory. On stage his presence raises the live energy, turning songs into communal moments that connect with the crowd.</p><p>As a vocalist he blends a warm, resonant timbre and broad range with precise phrasing, agile dynamics, and influences from Arabic pop and indie rock. Stay tuned for upcoming releases that showcase his range and stage energy.</p>
3179                        </div>
3180                    </div>
3181                </div>
3182            </div>
3183        </div>
3184<div id="bio-ranya-suleiman" class="bio-page">
3185            <div class="bio-header">
3186                <div class="container">
3187                    <a href="#artists" data-action="back" class="back-button lang-ar">→ العودة إلى الفنانين</a>
3188                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
3189                </div>
3190            </div>
3191            
3192            <div class="bio-content">
3193                <div class="bio-card">
3194                    <div class="bio-image-section">
3195                        <img src="https://media.echovira.com/bahira/bahira_ranya_suleiman_multi_instrumentalist_portrait_0.png" alt="Ranya Suleiman" class="bio-artist-image"
3196                srcset="https://media.echovira.com/bahira/bahira_ranya_suleiman_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_ranya_suleiman_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_ranya_suleiman_multi_instrumentalist_portrait_0-full.webp 1024w"
3197                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
3198                    </div>
3199                    <div class="bio-text-section">
3200                        <div class="bio-artist-title">
3201                            <h1 class="lang-ar">رانيا سليمان</h1>
3202                            <h1 class="lang-en">Ranya Suleiman</h1>
3203                            <div class="stage-name">"Ranya" • 25 عامًا / Age 25</div>
3204                            <div class="role lang-ar">عازفة آلات متعددة</div>
3205                            <div class="role lang-en">Multi-Instrumentalist</div>
3206                        </div>
3207                        <div class="bio-description lang-ar">
3208                            <p>تعرفوا على رانيا سليمان (Ranya)، العازفة الشاملة لفرقة بهيرة — 25 سنة، يدها سحرية وإتقانها للآلات يشكل القلب النابض لصوتنا. من الوتريات إلى البيانو والإلكترونيات، مهاراتها التقنية واللمسة العاطفية تخلق طبقات موسيقية غنية ومتفردة.</p><p>موسيقية تجريبية تمزج الألحان العربية مع طبقات الروك والإلكترونيات الحديثة. كمطربة، طبقة صوتها الدافئة من المتوسط إلى العالي، والصياغة المعبرة، والديناميكيات المسيطر عليها تتحرك بين الخطوط الحميمة والخطافات المرتفعة. كعازفة آلات، تجلب النطق الدقيق، والعزف المركب، واللمسات الارتجالية التي تضيف عمقاً إيقاعياً ومنعطفات غير متوقعة على المسرح.</p><p>كملحنة تبني دوافع لا تُنسى، ووئام متحول، وتوزيعات نحيلة تدع كل جزء يتنفس. أجزاء رانيا المتعددة الطبقات وحضورها المسرحي المركز يشددان صوت بهيرة ويدفعان العروض الحية إلى مساحات متوترة وتطهيرية. مساهمتها الفنية تعيد تشكيل هوية الفرقة.</p>
3209                        </div>
3210                        <div class="bio-description lang-en">
3211                            <p>Meet Ranya Suleiman (Ranya), Bahira's 25-year-old multi-instrumentalist — her magical hands and mastery of instruments are the beating heart of our sound. From strings to piano and electronic textures, her technical skill and emotional touch build rich, distinctive layers that shape our arrangements.</p><p>An experimental musician who blends Arabic melodies with modern rock and electronic layers. As a vocalist, her warm mid-to-high timbre, expressive phrasing, and controlled dynamics move between intimate lines and soaring hooks. As an instrumentalist, she brings precise articulation, textured playing, and improvisational flourishes that add rhythmic depth and unexpected turns on stage.</p><p>
3211As a composer she builds memorable motifs, shifting harmonies, and lean arrangements that let each part breathe. Ranya's layered parts and focused stage presence tighten Bahira's sound and push live shows into tense, cathartic spaces. Her contributions reshape the band's identity.</p>
3212                        </div>
3213                    </div>
3214                </div>
3215            </div>
3216        </div>
3217<div id="bio-salma-barakat" class="bio-page">
3218            <div class="bio-header">
3219                <div class="container">
3220                    <a href="#artists" data-action="back" class="back-button lang-ar">→ العودة إلى الفنانين</a>
3221                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
3222                </div>
3223            </div>
3224            
3225            <div class="bio-content">
3226                <div class="bio-card">
3227                    <div class="bio-image-section">
3228                        <img src="https://media.echovira.com/bahira/bahira_salma_barakat_composer_lyricist_portrait_0.png" alt="Salma Barakat" class="bio-artist-image"
3229                srcset="https://media.echovira.com/bahira/bahira_salma_barakat_composer_lyricist_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_salma_barakat_composer_lyricist_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_salma_barakat_composer_lyricist_portrait_0-full.webp 1024w"
3230                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
3231                    </div>
3232                    <div class="bio-text-section">
3233                        <div class="bio-artist-title">
3234                            <h1 class="lang-ar">سلمى بركات</h1>
3235                            <h1 class="lang-en">Salma Barakat</h1>
3236                            <div class="stage-name">"Salma" • 26 عامًا / Age 26</div>
3237                            <div class="role lang-ar">ملحنة وكاتبة أغانٍ</div>
3238                            <div class="role lang-en">Composer & Lyricist</div>
3239                        </div>
3240                        <div class="bio-description lang-ar">
3241                            <p>تعرفوا على سلمى بركات — \xabسلمى\xbb، ملحنة وكاتبة أغانٍ في فرقة بهيرة، تبلغ من العمر 26 عامًا. سلمى تصنع ألحانًا تمزج الحداثة العربية بالعاطفة، وتنسج كلمات شعرية عميقة تشكل الهوية الموسيقية المميزة للفرقة.</p><p>شاعرة غنائية شكلتها الحداثة العربية والتيارات العاطفية العميقة. كملحنة تبني ألحاناً لا تُنسى، وأفكار هارمونية متعددة الطبقات ودوافع متكررة، باستخدام هياكل واضحة وتقدمات مميزة تحدد صوت بهيرة. ككاتبة أغانٍ تكتب بصور حية، وسرد قصصي حميم وإيقاع منتبه، موازنة بين الشعور الشخصي والرنين الثقافي.</p><p>كتابتها الغنائية توجه لوحة الفرقة الصوتية وتغذي طاقة حية تشعر بالدقة والإلحاح والمباشرة العاطفية. ترقبوا إصداراتنا القادمة لتسمعوا براعتها في التلحين والكلمات، ولا تنسوا مشاركة آرائكم وتعليقاتكم!</p>
3242                        </div>
3243                        <div class="bio-description lang-en">
3244                            <p>Meet Salma Barakat — Salma, 26, the composer and lyricist behind Bahira's sound. She writes melodies that blend Arab modernism with raw emotion and crafts poetic lyrics and arrangements that shape the band's musical identity and upcoming releases.</p><p>A poetic lyricist shaped by Arab modernism and deep emotional currents. As composer she builds memorable melodies, layered harmonic ideas and recurring motifs, using clear structures and signature progressions that define Bahira's sound. As lyricist she writes with vivid imagery, intimate storytelling and attentive cadence, balancing personal feeling with cultural resonance.</p><p>Her songwriting steers the band's sonic palette and fuels a live energy that feels precise, urgent and emotionally direct. Follow us to hear the new tracks, celebrate her work, and tell us which lines or melodies move you most!</p>
3245                        </div>
3246                    </div>
3247                </div>
3248            </div>
3249        </div>
3250<div id="bio-tariq-nasser" class="bio-page">
3251            <div class="bio-header">
3252                <div class="container">
3253                    <a href="#artists" data-action="back" class="back-button lang-ar">→ العودة إلى الفنانين</a>
3254                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
3255                </div>
3256            </div>
3257            
3258            <div class="bio-content">
3259                <div class="bio-card">
3260                    <div class="bio-image-section">
3261                        <img src="https://media.echovira.com/bahira/bahira_tariq_nasser_male_singer_portrait_0.png" alt="Tariq Nasser" class="bio-artist-image"
3262                srcset="https://media.echovira.com/bahira/bahira_tariq_nasser_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/bahira/bahira_tariq_nasser_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/bahira/bahira_tariq_nasser_male_singer_portrait_0-full.
3262webp 1024w"
3263                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
3264                    </div>
3265                    <div class="bio-text-section">
3266                        <div class="bio-artist-title">
3267                            <h1 class="lang-ar">طارق ناصر</h1>
3268                            <h1 class="lang-en">Tariq Nasser</h1>
3269                            <div class="stage-name">"Tariq" • 26 عامًا / Age 26</div>
3270                            <div class="role lang-ar">مغني</div>
3271                            <div class="role lang-en">Male Singer</div>
3272                        </div>
3273                        <div class="bio-description lang-ar">
3274                            <p>تعرفوا على طارق ناصر — مغني فرقة بهيرة القوي، 26 سنة: صوت مسرحي مكثف يملأ كل لحن بالطاقة. صوته الدرامي والنبرة العاطفية هما قلب الصوت الجماعي لبهيرة، وإسهامه الفني يرفع طاقة الفرقة ويجهزنا لموسيقى جديدة تصدح قريبًا.</p><p>مطرب قوي بأداء درامي ومكثف يرسخ صوت الفرقة. طبقة صوته دافئة ولكن خام، بمدى واسع، وصياغة دقيقة، وديناميكيات مسيطر عليها، وحضور مسرحي آمر تشكله تأثيرات الروك والمقام العربي والمسرح. صوته يشكل التوزيعات، يقود الألحان إلى قمم سينمائية ويضيف لون شرق أوسطي للهارمونيات.</p><p>على المسرح يوجه الطاقة الحية — إشارات محكمة، وتضخمات ديناميكية، ولحظات تحول المقاطع الهادئة إلى ذروات كاملة للفرقة. استمعوا لأحدث مقطوعات بهيرة ومقاطع الفيديو الحية لتسمعوا كيف يحول طارق كل أغنية. استمعوا، تابعوا وشاركونا آراءكم!</p>
3275                        </div>
3276                        <div class="bio-description lang-en">
3277                            <p>Meet Tariq Nasser — the powerhouse vocalist of Bahira, 26 years old, with dramatic, intense vocals and stage energy that lift every song. His expressive tone and emotional delivery shape the band's sound and promise exciting new music on the horizon.</p><p>A powerhouse vocalist with dramatic, intense delivery that anchors the band's sound. His timbre is warm yet raw, with a wide range, precise phrasing, controlled dynamics, and a commanding stage presence shaped by rock, Arabic maqam, and theatrical influences. His voice shapes the arrangements, driving melodies into cinematic peaks and adding Middle Eastern color to the harmonies.</p><p>On stage he steers the live energy—tight cues, dynamic swells, and moments that turn quiet passages into full-band climaxes. Listen to Bahira's recent tracks and live clips to hear how Tariq transforms each song. Music lovers, join the journey, leave a comment, and share to spread the sound of Bahira.</p>
3278                        </div>
3279                    </div>
3280                </div>
3281            </div>
3282        </div>
3283</div>
3284<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
3285  <nav aria-label="Site pages">
3286    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
3287    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
3288    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
3289    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
3290  </nav>
3291  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
3292</footer>
3293`;e.s(["BahiraEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=(0,t.injectFluidCanvas)(a,"#10806a","#0d1117",.28);function s(e){document.body.classList.remove("lang-ar","lang-en"),document.body.classList.add("lang-"+e),a.querySelectorAll("[data-lang]").forEach(e
3293=>e.classList.remove("active")),a.querySelector(`[data-lang="${e}"]`)?.classList.add("active")}function r(e){a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display="none"});let i=document.getElementById("bio-"+e);i&&(i.classList.add("active"),window.scrollTo(0,0))}function n(){a.querySelectorAll(".bio-page").forEach(e=>e.classList.remove("active")),a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display=""}),window.scrollTo(0,0)}function o(e){let a=e.target,i=a.closest("[data-artist-id]");if(i){e.preventDefault(),r(i.dataset.artistId);return}if(a.closest('[data-action="back"]')){e.preventDefault(),n();return}}window.setLanguage=s,s("ar"),a.querySelector('[data-lang="ar"]')?.addEventListener("click",()=>s("ar")),a.querySelector('[data-lang="en"]')?.addEventListener("click",()=>s("en")),window.showArtistBio=r,window.hideBioPage=n,window.showMainPage=n;let l=document.getElementById("mobileToggle"),c=document.getElementById("navMenu");l&&c&&l.addEventListener("click",()=>c.classList.toggle("active"));let d=()=>document.getElementById("mainNav")?.classList.toggle("scrolled",window.scrollY>100);return a.addEventListener("click",o),window.addEventListener("scroll",d),()=>{i(),a.removeEventListener("click",o),window.removeEventListener("scroll",d),delete window.setLanguage,delete window.showArtistBio,delete window.hideBioPage,delete window.showMainPage}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,className:"echovira-page-root",dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(n)},suppressHydrationWarning:!0}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},461492,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n=`
3294    <link rel="preconnect" href="https://fonts.googleapis.com">
3295    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
3296    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700;900&family=Nanum+Myeongjo:wght@400;700;800&display=swap" rel="stylesheet">
3297    <style>
3298        .vc_row[data-vc-full-width], .wpb_column, .vc_column_container, .wpb_wrapper, .entry-content, .site-content-contain, #content, .site-content, .site, #page, main {
3299            width: 100% !important;
3300            max-width: 100% !important;
3301            padding: 0 !important;
3302            margin: 0 !important;
3303            margin-top: 0 !important;
3304            padding-top: 0 !important;
3305        }
3306
3307        /* Korean Flag Theme Colors */
3308        :root {
3309            --ev-bg: #fafafa;
3310            --ev-fg: #2c2c2c;
3311            --primary-color: #1a1a1a;
3312            --korea-red: #C60C30;
3313            --korea-blue: #003478;
3314            --korea-black: #000000;
3315            --white: #ffffff;
3316            --light-gray: #f5f5f5;
3317            --text-light: #ffffff;
3318            --text-dark: #2c2c2c;
3319            --background-dark: #0a0a0a;
3320            --background-light: #fafafa;
3321            --gradient-main: linear-gradient(135deg, #C60C30 0%, #003478 100%);
3322            --shadow-light: 0 2px 20px rgba(0,0,0,0.1);
3323            --shadow-heavy: 0 10px 40px rgba(0,0,0,0.2);
3324            --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
3325        }
3326
3327        * {
3328            margin: 0;
3329            padding: 0;
3330            box-sizing: border-box;
3331        }
3332
3333        body {
3334            font-family: 'Noto Sans KR', -apple-system, sans-serif;
3335            line-height: 1.8;
3336            color: var(--ev-fg);
3337            background: var(--ev-bg);
3338            overflow-x: hidden;
3339            margin: 0 !important;
3340            padding: 0 !important;
3341        }
3342
3343        /* Hide inactive language */
3344        body:not(.lang-ko) .lang-ko { display: none !important; }
3345        body:not(.lang-en) .lang-en { display: none !important; }
3346
3347        /* Language Toggle */
3348        .lang-toggle {
3349            position: absolute;
3350            top: 20px;
3351            right: 20px;
3352            z-index: 1001;
3353            background: rgba(255,255,255,0.2);
3354            border-radius: 25px;
3355            padding: 8px;
3356            backdrop-filter: blur(10px);
3357        }
3358
3359        .lang-toggle button {
3360            background: transparent;
3361            border: none;
3362            padding: 8px 16px;
3363            cursor: pointer;
3364            font-weight: 700;
3365            border-radius: 20px;
3366            transition: var(--transition);
3367            font-size: 0.9rem;
3368            color: white;
3369        }
3370
3371        .lang-toggle button.active {
3372            background: var(--korea-red);
3373            color: white;
3374        }
3375
3376        /* Navigation */
3377        .main-nav {
3378            position: fixed;
3379            top: 0;
3380            left: 0;
3381            right: 0;
3382            background: rgba(10, 10, 10, 0.95);
3383            backdrop-filter: blur(20px);
3384            z-index: 1000;
3385            padding: 1rem 0;
3386            border-bottom: 1px solid rgba(198, 12, 48, 0.3);
3387        }
3388
3389        .nav-container {
3390            max-width: 1200px;
3391            margin: 0 auto;
3392            padding: 0 20px;
3393            padding-right: 210px;
3394            display: flex;
3395            justify-content: space-between;
3396            align-items: center;
3397        }
3398
3399        .logo img { height: 50px; }
3400
3401        .nav-menu {
3402            display: flex;
3403            list-style: none;
3404            gap: 2rem;
3405        }
3406
3407        .nav-menu a {
3408            color: var(--text-light);
3409            text-decoration: none;
3410            font-weight: 700;
3411            transition: var(--transition);
3412        }
3413
3414        /* --korea-red (#C60C30) on the dark nav bg is ~2.95:1, below AA's
3415           4.5:1 -- lightened for this specific dark-bg hover context
3416           (--korea-red itself is fine as used elsewhere, e.g. on white). */
3417        .nav-menu a:hover { color: #da6178; }
3418
3419        .mobile-menu-toggle {
3420            display: none;
3421            background: none;
3422            border: none;
3423            color: var(--text-light);
3424            font-size: 1.5rem;
3425            cursor: pointer;
3426        }
3427
3428        /* Hero Section */
3429        .hero-section {
3430            min-height: 100vh;
3431            /* Worst-case gradient stop (#C60C30 red) already gives white
3432               text ~6:1 -- no scrim needed, just a solid stand-in so the
3433               ADA crawler can see it (it only reads background-color, not
3434               gradients, and falls through to a near-white default
3435               otherwise). */
3436            --ada-contrast-bg: #c60c30;
3437            background: var(--gradient-main);
3438            display: flex;
3439            align-items: center;
3440            justify-content: center;
3441            text-align: center;
3442            color: var(--text-light);
3443            position: relative;
3444            overflow: hidden;
3445        }
3446
3447        .hero-section::before {
3448            content: '';
3449            position: absolute;
3450            top: 0;
3451            left: 0;
3452            right: 0;
3453            bottom: 0;
3454            background: radial-gradient(circle at 50% 0%, rgba(255,255,255,0.1) 0%, transparent 50%);
3455        }
3456
3457        .hero-content {
3458            position: relative;
3459            z-index: 2;
3460            max-width: 900px;
3461            padding: 0 20px;
3462        }
3463
3464        .hero-title {
3465            font-family: 'Nanum Myeongjo', serif;
3466            font-size: clamp(3rem, 8vw, 6rem);
3467            margin-bottom: 1rem;
3468            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
3469            font-weight: 900;
3470        }
3471
3472        .hero-subtitle {
3473            font-size: clamp(1rem, 2vw, 1.3rem);
3474            margin-bottom: 2rem;
3475            opacity: 0.9;
3476            line-height: 1.6;
3477        }
3478
3479        .cta-button {
3480            display: inline-block;
3481            padding: 18px 40px;
3482            background: white;
3483            color: var(--korea-red);
3484            text-decoration: none;
3485            border-radius: 50px;
3486            font-weight: 700;
3487            font-size: 1.1rem;
3488            transition: var(--transition);
3489            box-shadow: var(--shadow-light);
3490        }
3491
3492        .cta-button:hover {
3493            transform: translateY(-3px);
3494            box-shadow: var(--shadow-heavy);
3495            background: var(--korea-blue);
3496            color: white;
3497        }
3498
3499        /* Sections */
3500        .section {
3501            padding: 80px 0;
3502        }
3503
3504        .section-dark {
3505            background: var(--background-dark);
3506            color: var(--text-light);
3507        }
3508
3509        .container {
3510            max-width: 1200px;
3511            margin: 0 auto;
3512            padding: 0 20px;
3513        }
3514
3515        .section-title {
3516            text-align: center;
3517            font-size: 2.5rem;
3518            margin-bottom: 3rem;
3519            position: relative;
3520            font-family: 'Nanum Myeongjo', serif;
3521            font-weight: 900;
3522        }
3523
3524        .section-title::after {
3525            content: '';
3526            position: absolute;
3527            bottom: -10px;
3528            left: 50%;
3529            transform: translateX(-50%);
3530            width: 80px;
3531            height: 3px;
3532            background: var(--korea-red);
3533            border-radius: 2px;
3534        }
3535
3536        .about-content {
3537            max-width: 900px;
3538            margin: 0 auto;
3539            text-align: center;
3540            line-height: 2;
3541            font-size: 1.1rem;
3542        }
3543
3544        .about-content p {
3545            margin-bottom: 1.5rem;
3546        }
3547
3548        /* Artists Gallery */
3549        .artists-gallery {
3550            display: grid;
3551            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
3552            gap: 2.5rem;
3553            margin-top: 3rem;
3554        }
3555
3556        .artist-card {
3557            position: relative;
3558            cursor: pointer;
3559            transition: var(--transition);
3560            background: white;
3561            border-radius: 20px;
3562            overflow: hidden;
3563            box-shadow: var(--shadow-light);
3564            border: 2px solid transparent;
3565        }
3566
3567        .artist-card:hover {
3568            transform: translateY(-10px) scale(1.02);
3569            box-shadow: var(--shadow-heavy);
3570            border-color: var(--korea-blue);
3571        }
3572
3573        .artist-image-wrapper {
3574            position: relative;
3575            width: 100%;
3576            aspect-ratio: 1;
3577            overflow: hidden;
3578        }
3579
3580        .artist-image {
3581            width: 100%;
3582            height: 100%;
3583            object-fit: cover;
3584            transition: transform 0.5s ease;
3585        }
3586
3587        .artist-card:hover .artist-image {
3588            transform: scale(1.1);
3589        }
3590
3591        .artist-overlay {
3592            position: absolute;
3593            bottom: 0;
3594            left: 0;
3595            right: 0;
3596            background: linear-gradient(to top, rgba(0,0,0,0.9), transparent);
3597            padding: 2rem 1.5rem 1.5rem;
3598            color: white;
3599        }
3600
3601        .artist-stage-name {
3602            font-size: 1.5rem;
3603            font-weight: 900;
3604            margin-bottom: 0.3rem;
3605        }
3606
3607        .artist-role-badge {
3608            display: inline-block;
3609            background: var(--korea-red);
3610            padding: 4px 12px;
3611            border-radius: 15px;
3612            font-size: 0.75rem;
3613            font-weight: 700;
3614            text-transform: uppercase;
3615            letter-spacing: 0.5px;
3616        }
3617
3618        .artist-real-name {
3619            font-size: 0.9rem;
3620            opacity: 0.8;
3621            margin-top: 0.5rem;
3622        }
3623
3624        /* Releases, Videos, News */
3625        .releases-grid, .videos-grid, .news-grid {
3626            display: grid;
3627            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
3628            gap: 2rem;
3629            margin-top: 3rem;
3630        }
3631
3632        .release-card, .video-card, .news-card {
3633            background: white;
3634            border-radius: 20px;
3635            overflow: hidden;
3636            box-shadow: var(--shadow-light);
3637            transition: var(--transition);
3638            border: 2px solid transparent;
3639        }
3640
3641        .section-dark .release-card,
3642        .section-dark .video-card,
3643        .section-dark .news-card {
3644            background: rgba(255,255,255,0.05);
3645            border-color: rgba(255,255,255,0.1);
3646        }
3647
3648        .release-card:hover, .video-card:hover, .news-card:hover {
3649            transform: translateY(-10px);
3650            box-shadow: var(--shadow-heavy);
3651            border-color: var(--korea-blue);
3652        }
3653
3654        .release-image, .video-embed, .news-image {
3655            position: relative;
3656            overflow: hidden;
3657            background: var(--gradient-main);
3658            display: flex;
3659            align-items: center;
3660            justify-content: center;
3661            color: white;
3662            font-size: 4rem;
3663        }
3664
3665        .release-image { 
3666            aspect-ratio: 1;
3667            position: relative;
3668        }
3669        
3670        .release-image img,
3671        .news-image img {
3672            width: 100%;
3673            height: 100%;
3674            object-fit: cover;
3675        }
3676
3677        .video-embed { 
3678            padding-bottom: 56.25%; 
3679            height: 0;
3680            position: relative;
3681        }
3682
3683        .video-embed iframe {
3684            position: absolute;
3685            top: 0;
3686            left: 0;
3687            width: 100%;
3688            height: 100%;
3689        }
3690
3691        .news-image { height: 200px; }
3692
3693        .release-info, .video-info, .news-content {
3694            padding: 1.5rem;
3695        }
3696
3697        .section-dark .release-info,
3698        .section-dark .video-info,
3699        .section-dark .news-content {
3700            color: var(--text-light);
3701        }
3702
3703        .release-title, .video-title, .news-title {
3704            font-size: 1.3rem;
3705            margin-bottom: 0.5rem;
3706            font-weight: 700;
3707            color: var(--text-dark);
3708        }
3709
3710        .section-dark .release-title,
3711        .section-dark .video-title,
3712        .section-dark .news-title {
3713            color: var(--text-light);
3714        }
3715
3716        .release-description, .news-excerpt {
3717            font-size: 0.95rem;
3718            color: #666;
3719            margin-bottom: 1rem;
3720            line-height: 1.6;
3721        }
3722
3723        .section-dark .release-description,
3724        .section-dark .news-excerpt {
3725            color: rgba(255,255,255,0.8);
3726        }
3727
3728        .streaming-links {
3729            display: flex;
3730            gap: 0.5rem;
3731            flex-wrap: wrap;
3732        }
3733
3734        .streaming-link {
3735            padding: 8px 15px;
3736            background: var(--korea-blue);
3737            color: white;
3738            text-decoration: none;
3739            border-radius: 20px;
3740            font-size: 0.8rem;
3741            font-weight: 700;
3742            transition: var(--transition);
3743            display: inline-block;
3744        }
3745
3746        .streaming-link:hover {
3747            background: var(--korea-red);
3748            transform: translateY(-2px);
3749        }
3750
3751        .video-link, .read-more {
3752            display: inline-block;
3753            margin-top: 1rem;
3754            color: var(--korea-red);
3755            text-decoration: none;
3756            font-weight: 700;
3757            transition: var(--transition);
3758        }
3759
3760        .section-dark .video-link,
3761        .section-dark .read-more {
3762            /* --korea-blue (#003478) is a deep navy meant for light
3763               backgrounds -- on this ~5%-white-tinted dark card it's
3764               1.51:1, far below AA's 4.5:1. Lightened for this
3765               dark-on-dark context specifically (--korea-blue itself is
3766               fine as used elsewhere, e.g. the hover state below on a
3767               white card). */
3768            color: #809abc;
3769        }
3770
3771        .video-link:hover, .read-more:hover {
3772            color: var(--korea-blue);
3773        }
3774
3775        .view-all-btn {
3776            text-align: center;
3777            margin-top: 3rem;
3778        }
3779
3780        .view-all-btn a {
3781            display: inline-block;
3782            padding: 15px 35px;
3783            background: var(--korea-red);
3784            color: white;
3785            text-decoration: none;
3786            border-radius: 30px;
3787            font-weight: 700;
3788            transition: var(--transition);
3789        }
3790
3791        .view-all-btn a:hover {
3792            background: var(--korea-blue);
3793            transform: translateY(-3px);
3794        }
3795
3796        .loading-message {
3797            grid-column: 1 / -1;
3798            text-align: center;
3799            padding: 3rem;
3800            font-size: 1.2rem;
3801            color: #999;
3802        }
3803
3804        /* Bio Pages */
3805        .bio-page {
3806            display: none;
3807            min-height: 100vh;
3808            padding-top: 80px;
3809            background: var(--background-light);
3810        }
3811
3812        .bio-page.active {
3813            display: block;
3814        }
3815
3816        .bio-header {
3817            background: var(--gradient-main);
3818            padding: 3rem 0;
3819            color: white;
3820            text-align: center;
3821        }
3822
3823        .back-button {
3824            display: inline-block;
3825            padding: 10px 25px;
3826            background: rgba(255,255,255,0.2);
3827            color: white;
3828            text-decoration: none;
3829            border-radius: 25px;
3830            margin-bottom: 1rem;
3831            transition: var(--transition);
3832            font-weight: 700;
3833        }
3834
3835        .back-button:hover {
3836            background: rgba(255,255,255,0.3);
3837            transform: translateY(-2px);
3838        }
3839
3840        .bio-content {
3841            max-width: 1000px;
3842            margin: -50px auto 0;
3843            position: relative;
3844            z-index: 10;
3845            padding: 0 20px 60px;
3846        }
3847
3848        .bio-card {
3849            background: white;
3850            border-radius: 20px;
3851            overflow: hidden;
3852            box-shadow: var(--shadow-heavy);
3853        }
3854
3855        .bio-image-section {
3856            padding: 3rem;
3857            text-align: center;
3858            background: linear-gradient(135deg, #e6f2ff 0%, #ffe6e6 100%);
3859        }
3860
3861        .bio-artist-image {
3862            width: 280px;
3863            height: 280px;
3864            border-radius: 50%;
3865            object-fit: cover;
3866            border: 6px solid white;
3867            box-shadow: var(--shadow-light);
3868        }
3869
3870        .bio-text-section {
3871            padding: 3rem;
3872        }
3873
3874        .bio-artist-title {
3875            text-align: center;
3876            margin-bottom: 2.5rem;
3877            padding-bottom: 2rem;
3878            border-bottom: 2px solid #f0f0f0;
3879        }
3880
3881        .bio-artist-title h1 {
3882            font-size: 2.8rem;
3883            margin-bottom: 0.8rem;
3884            font-family: 'Nanum Myeongjo', serif;
3885            color: var(--text-dark);
3886            font-weight: 900;
3887        }
3888
3889        .bio-artist-title .stage-name {
3890            font-size: 1.4rem;
3891            color: var(--korea-red);
3892            font-weight: 700;
3893            margin-bottom: 1rem;
3894        }
3895
3896        .bio-artist-title .role {
3897            display: inline-block;
3898            background: var(--korea-blue);
3899            color: white;
3900            padding: 10px 25px;
3901            border-radius: 25px;
3902            font-size: 1rem;
3903            font-weight: 700;
3904        }
3905
3906        .bio-description {
3907            line-height: 2;
3908            font-size: 1.1rem;
3909            color: var(--text-dark);
3910        }
3911
3912        .bio-description p {
3913            margin-bottom: 1.5rem;
3914            text-align: justify;
3915        }
3916
3917        /* Footer */
3918        .main-footer {
3919            background: var(--primary-color);
3920            color: var(--text-light);
3921            padding: 3rem 0 1rem;
3922            text-align: center;
3923        }
3924
3925        .social-links {
3926            display: flex;
3927            justify-content: center;
3928            gap: 1rem;
3929            margin-bottom: 2rem;
3930        }
3931
3932        .social-link {
3933            width: 50px;
3934            height: 50px;
3935            border-radius: 50%;
3936            background: var(--korea-red);
3937            color: var(--text-light);
3938            display: flex;
3939            align-items: center;
3940            justify-content: center;
3941            text-decoration: none;
3942            font-size: 1.2rem;
3943            transition: var(--transition);
3944        }
3945
3946        .social-link:hover {
3947            background: var(--korea-blue);
3948            transform: translateY(-3px);
3949        }
3950
3951        @media (max-width: 768px) {
3952            .mobile-menu-toggle { display: block; }
3953            .nav-container { padding-right: 170px; }
3954            .lang-toggle { padding: 5px; }
3955            .lang-toggle button { padding: 6px 10px; font-size: 0.75rem; }
3956            .nav-menu {
3957                position: fixed;
3958                top: 70px;
3959                left: 0;
3960                right: 0;
3961                background: var(--primary-color);
3962                flex-direction: column;
3963                padding: 2rem;
3964                transform: translateY(-100%);
3965                opacity: 0;
3966                visibility: hidden;
3967                transition: var(--transition);
3968            }
3969            .nav-menu.active {
3970                transform: translateY(0);
3971                opacity: 1;
3972                visibility: visible;
3973            }
3974            .artists-gallery {
3975                grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
3976                gap: 1.5rem;
3977            }
3978            .releases-grid, .videos-grid, .news-grid {
3979                grid-template-columns: 1fr;
3980            }
3981            .bio-artist-image {
3982                width: 200px;
3983                height: 200px;
3984            }
3985            .bio-artist-title h1 {
3986                font-size: 2rem;
3987            }
3988            .bio-text-section {
3989                padding: 2rem 1.5rem;
3990            }
3991        }
3992    
3993    .ev-nw-badge{position:fixed;bottom:72px;right:20px;z-index:9999;display:inline-flex;align-items:center;gap:5px;padding:8px 14px;background:rgba(2,2,8,.9);border:1px solid rgba(255,255,255,.14);border-radius:100px;font-size:.68rem;font-weight:600;color:rgba(255,255,255,.55);text-decoration:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);letter-spacing:.06em;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}
3994.ev-nw-badge:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(2,2,8,.97)}
3995.ev-nw-badge-mark{width:14px;height:14px;display:grid;grid-template-columns:1fr 1fr;gap:2px;flex-shrink:0}
3996.ev-nw-badge-mark span{background:currentColor;border-radius:2px;display:block}
3997  </style>
3998
3999<a href="https://echovira.com" class="ev-nw-badge" target="_blank" rel="noopener" title="EchoVira Music Network">
4000  <div class="ev-nw-badge-mark"><span></span><span></span><span></span><span></span></div>
4001  EchoVira
4002</a>
4003
4004<nav class="main-nav" id="mainNav">
4005    <div class="nav-container">
4006        <a href="#home" class="logo">
4007            <img src="https://media.echovira.com/echovira/byeolbit_logo.png" alt="Byeolbit 별빛"
4008                srcset="https://media.echovira.com/echovira/byeolbit_logo-400.webp 400w, https://media.echovira.com/echovira/byeolbit_logo-800.webp 800w, https://media.echovira.com/echovira/byeolbit_logo-full.webp 1024w"
4009                sizes="50px" width="1024" height="1024" decoding="async">
4010        </a>
4011        <ul class="nav-menu" id="navMenu">
4012            <li class="lang-ko"><a href="#home">홈</a></li>
4013            <li class="lang-ko"><a href="#about">소개</a></li>
4014            <li class="lang-ko"><a href="#artists">아티스트</a></li>
4015            <li class="lang-ko"><a href="#releases">발매</a></li>
4016            <li class="lang-ko"><a href="#videos">비디오</a></li>
4017            <li class="lang-ko"><a href="#news">뉴스</a></li>
4018            <li class="lang-en"><a href="#home">Home</a></li>
4019            <li class="lang-en"><a href="#about">About</a></li>
4020            <li class="lang-en"><a href="#artists">Artists</a></li>
4021            <li class="lang-en"><a href="#releases">Releases</a></li>
4022            <li class="lang-en"><a href="#videos">Videos</a></li>
4023            <li class="lang-en"><a href="#news">News</a></li>
4024        </ul>
4025        <button class="mobile-menu-toggle" id="mobileToggle">☰</button>
4026    </div>
4027<div class="lang-toggle">
4028        <button onclick="window.setLanguage&&setLanguage('ko')" class="lang-btn-ko active" data-lang="ko">한국어</button>
4029        <button onclick="window.setLanguage&&setLanguage('en')" class="lang-btn-en" data-lang="en">English</button>
4030    </div>
4031</nav>
4032
4033<span id="main-content" tabindex="-1"></span>
4034
4035<section class="hero-section" id="home">
4036    
4037    
4038    <div class="hero-content">
4039        <h1 class="hero-title">별빛 Byeolbit</h1>
4040        <p class="hero-subtitle lang-ko">한국 인디 밴드 | K-Pop과 인디 록의 융합 | 12명의 재능있는 아티스트 | 세계적인 프로덕션</p>
4041        <p class="hero-subtitle lang-en">Korean Indie Band | K-Pop Meets Indie Rock | 12 Talented Artists | International Production</p>
4042        <a href="#about" class="cta-button lang-ko">우리 음악 들어보기</a>
4043        <a href="#about" class="cta-button lang-en">Discover Our Music</a>
4044    </div>
4045</section>
4046
4047<section class="section" id="about">
4048    <div class="container">
4049        <h2 class="section-title lang-ko">별빛 소개</h2>
4050        <h2 class="section-title lang-en">About Byeolbit</h2>
4051        <div class="about-content">
4052            <p class="lang-ko">
4053                <strong>별빛 (Byeolbit)</strong> — 단순한 밴드가 아니라, 한국 <strong>인디 음악</strong>과 <strong>얼터너티브 록</strong>의 새로운 물결을 대표하는 그룹입니다. 우리는 <strong>K-Pop의 멜로디</strong>와 <strong>전통 한국 음악 요소</strong>를 현대적인 <strong>인디 록</strong>, <strong>R&B</strong>, <strong>실험적 음악</strong>과 완벽하게 융합하여 문화적 경계를 넘어 마음을 감동시키는 독특한 사운드를 만듭니다.
4054            </p>
4055            <p class="lang-ko">
4056                12명의 재능있는 뮤지션으로 구성 — <strong>보컬리스트</strong>, <strong>멀티 인스트루멘탈리스트</strong>, <strong>작곡가와 작사가</strong> — 별빛은 현대 <strong>한국 음악</strong>의 다양성과 창의성을 대표합니다. 우리는 <strong>K-Pop</strong>, <strong>재즈</strong>, <strong>소울</strong>, <strong>인디 팝</strong>, <strong>록</strong>에서 영감을 얻어 <strong>세계적 수준</strong>과 <strong>진정한 한국적 정체성</strong>을 지닌 작품을 제작합니다.
4057            </p>
4058            <p class="lang-ko">
4059                서울과 전국의 <strong>라이브 공연</strong>과 <strong>음악 페스티벌</strong>부터 Spotify, Apple Music, YouTube Music, Melon, Genie 등 모든 스트리밍 플랫폼에서 <strong>디지털 앨범</strong>과 <strong>싱글</strong>을 발매하는 것까지, 별빛은 한국 음악의 풍부한 유산을 존중하면서 글로벌 혁신을 수용하는 음악적 유산을 구축하고 있습니다. 별빛은 별빛을 의미합니다 — 따뜻하고, 밝고, 희망으로 가득합니다.
4060            </p>
4061            
4062            <p class="lang-en">
4063                <strong>Byeolbit (별빛)</strong> — more than just a band, Byeolbit represents a new wave of Korean <strong>indie music</strong> and <strong>alternative rock</strong>. We perfectly blend <strong>K-Pop melodies</strong> and <strong>traditional Korean musical elements</strong> with modern <strong>indie rock</strong>, <strong>R&B</strong>, and <strong>experimental music</strong> to create a unique sound that transcends cultural boundaries and touches hearts.
4064            </p>
4065            <p class="lang-en">
4066                Formed by 12 talented musicians — <strong>vocalists</strong>, <strong>multi-instrumentalists</strong>, <strong>composers and lyricists</strong> — Byeolbit represents the diversity and creativity of contemporary <strong>Korean music</strong>. We draw inspiration from <strong>K-Pop</strong>, <strong>jazz</strong>, <strong>soul</strong>, <strong>indie pop</strong>, and <strong>rock</strong> to produce works with <strong>world-class quality</strong> and <strong>
4066authentic Korean identity</strong>.
4067            </p>
4068            <p class="lang-en">
4069                From <strong>live performances</strong> and <strong>music festivals</strong> in Seoul and across Korea to releasing <strong>digital albums</strong> and <strong>singles</strong> on all streaming platforms (Spotify, Apple Music, YouTube Music, Melon, Genie), Byeolbit is building a musical legacy that honors Korea's rich musical heritage while embracing global innovation. Byeolbit means starlight — warm, bright, filled with hope.
4070            </p>
4071        </div>
4072    </div>
4073</section>
4074
4075<section class="section section-dark" id="artists">
4076    <div class="container">
4077        <h2 class="section-title lang-ko">아티스트</h2>
4078        <h2 class="section-title lang-en">The Artists</h2>
4079        <div class="artists-gallery" id="artistsGallery">
4080<div class="artist-card" data-artist-id="dongha-yoon" style="cursor:pointer">
4081            <div class="artist-image-wrapper">
4082                <img src="https://media.echovira.com/byeolbit/byeolbit_dongha_yoon_male_singer_portrait_0.png" alt="Dongha Yoon" class="artist-image"
4083                srcset="https://media.echovira.com/byeolbit/byeolbit_dongha_yoon_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_dongha_yoon_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_dongha_yoon_male_singer_portrait_0-full.webp 1024w"
4084                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
4085                <div class="artist-overlay">
4086                    <div class="artist-stage-name">Dongha</div>
4087                    <div class="artist-role-badge lang-ko">보컬</div>
4088                    <div class="artist-role-badge lang-en">Male Singer</div>
4089                    <div class="artist-real-name lang-ko">윤동하 • 27세</div>
4090                    <div class="artist-real-name lang-en">Dongha Yoon • Age 27</div>
4091                </div>
4092            </div>
4093        </div><div class="artist-card" data-artist-id="eunji-kang" style="cursor:pointer">
4094            <div class="artist-image-wrapper">
4095                <img src="https://media.echovira.com/byeolbit/byeolbit_eunji_kang_female_singer_portrait_0.png" alt="Eunji Kang" class="artist-image"
4096                srcset="https://media.echovira.com/byeolbit/byeolbit_eunji_kang_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_eunji_kang_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_eunji_kang_female_singer_portrait_0-full.webp 1024w"
4097                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
4098                <div class="artist-overlay">
4099                    <div class="artist-stage-name">Eunji</div>
4100                    <div class="artist-role-badge lang-ko">보컬</div>
4101                    <div class="artist-role-badge lang-en">Female Singer</div>
4102                    <div class="artist-real-name lang-ko">강은지 • 26세</div>
4103                    <div class="artist-real-name lang-en">Eunji Kang • Age 26</div>
4104                </div>
4105            </div>
4106        </div><div class="artist-card" data-artist-id="hana-lim" style="cursor:pointer">
4107            <div class="artist-image-wrapper">
4108                <img src="https://media.echovira.com/byeolbit/byeolbit_hana_lim_female_singer_portrait_1.png" alt="Hana Lim" class="artist-image"
4109                srcset="https://media.echovira.com/byeolbit/byeolbit_hana_lim_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_hana_lim_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_hana_lim_female_singer_portrait_1-full.webp 1024w"
4110                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
4111                <div class="artist-overlay">
4112                    <div class="artist-stage-name">Hana</div>
4113                    <div class="artist-role-badge lang-ko">보컬</div>
4114                    <div class="artist-role-badge lang-en">Female Singer</div>
4115                    <div class="artist-real-name lang-ko">임하나 • 27세</div>
4116                    <div class="artist-real-name lang-en">Hana Lim • Age 27</div>
4117                </div>
4118            </div>
4119        </div><div class="artist-card" data-artist-id="hyunwoo-lee" style="cursor:pointer">
4120            <div class="artist-image-wrapper">
4121                <img src="https://media.echovira.com/byeolbit/byeolbit_hyunwoo_lee_male_singer_portrait_0.png" alt="Hyunwoo Lee" class="artist-image"
4122                srcset="https://media.echovira.com/byeolbit/byeolbit_hyunwoo_lee_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_hyunwoo_lee_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_hyunwoo_lee_male_singer_portrait_0-full.
4122webp 1024w"
4123                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
4124                <div class="artist-overlay">
4125                    <div class="artist-stage-name">Hyunwoo</div>
4126                    <div class="artist-role-badge lang-ko">보컬</div>
4127                    <div class="artist-role-badge lang-en">Male Singer</div>
4128                    <div class="artist-real-name lang-ko">이현우 • 23세</div>
4129                    <div class="artist-real-name lang-en">Hyunwoo Lee • Age 23</div>
4130                </div>
4131            </div>
4132        </div><div class="artist-card" data-artist-id="jisoo-kim" style="cursor:pointer">
4133            <div class="artist-image-wrapper">
4134                <img src="https://media.echovira.com/byeolbit/byeolbit_jisoo_kim_male_singer_portrait_1.png" alt="Jisoo Kim" class="artist-image"
4135                srcset="https://media.echovira.com/byeolbit/byeolbit_jisoo_kim_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_jisoo_kim_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_jisoo_kim_male_singer_portrait_1-full.webp 1024w"
4136                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
4137                <div class="artist-overlay">
4138                    <div class="artist-stage-name">Jisoo</div>
4139                    <div class="artist-role-badge lang-ko">보컬</div>
4140                    <div class="artist-role-badge lang-en">Male Singer</div>
4141                    <div class="artist-real-name lang-ko">김지수 • 24세</div>
4142                    <div class="artist-real-name lang-en">Jisoo Kim • Age 24</div>
4143                </div>
4144            </div>
4145        </div><div class="artist-card" data-artist-id="jiwon-cho" style="cursor:pointer">
4146            <div class="artist-image-wrapper">
4147                <img src="https://media.echovira.com/byeolbit/byeolbit_jiwon_cho_composer_lyricist_portrait_1.png" alt="Jiwon Cho" class="artist-image"
4148                srcset="https://media.echovira.com/byeolbit/byeolbit_jiwon_cho_composer_lyricist_portrait_1-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_jiwon_cho_composer_lyricist_portrait_1-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_jiwon_cho_composer_lyricist_portrait_1-full.webp 1024w"
4149                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
4150                <div class="artist-overlay">
4151                    <div class="artist-stage-name">Jiwon</div>
4152                    <div class="artist-role-badge lang-ko">작곡가 & 작사가</div>
4153                    <div class="artist-role-badge lang-en">Composer & Lyricist</div>
4154                    <div class="artist-real-name lang-ko">조지원 • 26세</div>
4155                    <div class="artist-real-name lang-en">Jiwon Cho • Age 26</div>
4156                </div>
4157            </div>
4158        </div><div class="artist-card" data-artist-id="mina-jeon" style="cursor:pointer">
4159            <div class="artist-image-wrapper">
4160                <img src="https://media.echovira.com/byeolbit/byeolbit_mina_jeon_female_singer_portrait_0.png" alt="Mina Jeon" class="artist-image"
4161                srcset="https://media.echovira.com/byeolbit/byeolbit_mina_jeon_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_mina_jeon_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_mina_jeon_female_singer_portrait_0-full.webp 1024w"
4162                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
4163                <div class="artist-overlay">
4164                    <div class="artist-stage-name">Mina</div>
4165                    <div class="artist-role-badge lang-ko">보컬</div>
4166                    <div class="artist-role-badge lang-en">Female Singer</div>
4167                    <div class="artist-real-name lang-ko">전미나 • 23세</div>
4168                    <div class="artist-real-name lang-en">Mina Jeon • Age 23</div>
4169                </div>
4170            </div>
4171        </div><div class="artist-card" data-artist-id="minjun-park" style="cursor:pointer">
4172            <div class="artist-image-wrapper">
4173                <img src="https://media.echovira.com/byeolbit/byeolbit_minjun_park_male_singer_portrait_0.png" alt="Minjun Park" class="artist-image"
4174                srcset="https://media.echovira.com/byeolbit/byeolbit_minjun_park_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_minjun_park_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_minjun_park_male_singer_portrait_0-full.
4174webp 1024w"
4175                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
4176                <div class="artist-overlay">
4177                    <div class="artist-stage-name">Minjun</div>
4178                    <div class="artist-role-badge lang-ko">보컬</div>
4179                    <div class="artist-role-badge lang-en">Male Singer</div>
4180                    <div class="artist-real-name lang-ko">박민준 • 25세</div>
4181                    <div class="artist-real-name lang-en">Minjun Park • Age 25</div>
4182                </div>
4183            </div>
4184        </div><div class="artist-card" data-artist-id="seoyeon-kwon" style="cursor:pointer">
4185            <div class="artist-image-wrapper">
4186                <img src="https://media.echovira.com/byeolbit/byeolbit_seoyeon_kwon_multi_instrumentalist_portrait_0.png" alt="Seoyeon Kwon" class="artist-image"
4187                srcset="https://media.echovira.com/byeolbit/byeolbit_seoyeon_kwon_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_seoyeon_kwon_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_seoyeon_kwon_multi_instrumentalist_portrait_0-full.webp 1024w"
4188                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
4189                <div class="artist-overlay">
4190                    <div class="artist-stage-name">Seoyeon</div>
4191                    <div class="artist-role-badge lang-ko">멀티 악기 연주자</div>
4192                    <div class="artist-role-badge lang-en">Multi-Instrumentalist</div>
4193                    <div class="artist-real-name lang-ko">권서연 • 25세</div>
4194                    <div class="artist-real-name lang-en">Seoyeon Kwon • Age 25</div>
4195                </div>
4196            </div>
4197        </div><div class="artist-card" data-artist-id="soojin-han" style="cursor:pointer">
4198            <div class="artist-image-wrapper">
4199                <img src="https://media.echovira.com/byeolbit/byeolbit_soojin_han_female_singer_portrait_0.png" alt="Soojin Han" class="artist-image"
4200                srcset="https://media.echovira.com/byeolbit/byeolbit_soojin_han_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_soojin_han_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_soojin_han_female_singer_portrait_0-full.webp 1024w"
4201                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
4202                <div class="artist-overlay">
4203                    <div class="artist-stage-name">Soojin</div>
4204                    <div class="artist-role-badge lang-ko">보컬</div>
4205                    <div class="artist-role-badge lang-en">Female Singer</div>
4206                    <div class="artist-real-name lang-ko">한수진 • 25세</div>
4207                    <div class="artist-real-name lang-en">Soojin Han • Age 25</div>
4208                </div>
4209            </div>
4210        </div><div class="artist-card" data-artist-id="taeyang-choi" style="cursor:pointer">
4211            <div class="artist-image-wrapper">
4212                <img src="https://media.echovira.com/byeolbit/byeolbit_taeyang_choi_male_singer_portrait_0.png" alt="Taeyang Choi" class="artist-image"
4213                srcset="https://media.echovira.com/byeolbit/byeolbit_taeyang_choi_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_taeyang_choi_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_taeyang_choi_male_singer_portrait_0-full.webp 1024w"
4214                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
4215                <div class="artist-overlay">
4216                    <div class="artist-stage-name">Taeyang</div>
4217                    <div class="artist-role-badge lang-ko">보컬</div>
4218                    <div class="artist-role-badge lang-en">Male Singer</div>
4219                    <div class="artist-real-name lang-ko">최태양 • 26세</div>
4220                    <div class="artist-real-name lang-en">Taeyang Choi • Age 26</div>
4221                </div>
4222            </div>
4223        </div><div class="artist-card" data-artist-id="yuna-seo" style="cursor:pointer">
4224            <div class="artist-image-wrapper">
4225                <img src="https://media.echovira.com/byeolbit/byeolbit_yuna_seo_female_singer_portrait_0.png" alt="Yuna Seo" class="artist-image"
4226                srcset="https://media.echovira.com/byeolbit/byeolbit_yuna_seo_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_yuna_seo_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_yuna_seo_female_singer_portrait_0-full.
4226webp 1024w"
4227                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
4228                <div class="artist-overlay">
4229                    <div class="artist-stage-name">Yuna</div>
4230                    <div class="artist-role-badge lang-ko">보컬</div>
4231                    <div class="artist-role-badge lang-en">Female Singer</div>
4232                    <div class="artist-real-name lang-ko">서유나 • 24세</div>
4233                    <div class="artist-real-name lang-en">Yuna Seo • Age 24</div>
4234                </div>
4235            </div>
4236        </div>
4237</div>
4238    </div>
4239</section>
4240
4241<section class="section" id="releases">
4242    <div class="container">
4243        <h2 class="section-title lang-ko">최신 발매</h2>
4244        <h2 class="section-title lang-en">Latest Releases</h2>
4245        <div class="releases-grid" id="releasesGrid">
4246        <div class="release-card">
4247            <div class="release-image">🎵</div>
4248            <div class="release-info">
4249                <h3 class="release-title lang-ko">별빛 - 첫 싱글</h3>
4250                <h3 class="release-title lang-en">Byeolbit - First Single</h3>
4251                <p class="release-description lang-ko">소셜 미디어에서 별빛의 음악을 들어보세요</p>
4252                <p class="release-description lang-en">Listen to Byeolbit's music on social media</p>
4253                <div class="streaming-links">
4254                    <a href="https://www.youtube.com/@ByeolbitOfficial" target="_blank" class="streaming-link">YouTube</a>
4255                    <a href="https://www.instagram.com/byeolbitmusicband/" target="_blank" class="streaming-link">Instagram</a>
4256                    <a href="https://www.tiktok.com/@byeolbitofficial" target="_blank" class="streaming-link">TikTok</a>
4257                </div>
4258            </div>
4259        </div>
4260    </div>
4261    </div>
4262</section>
4263
4264<section class="section section-dark" id="videos">
4265    <div class="container">
4266        <h2 class="section-title lang-ko">뮤직 비디오</h2>
4267        <h2 class="section-title lang-en">Music Videos</h2>
4268        <div class="videos-grid" id="videosGrid">
4269        <div class="video-card">
4270            <div class="video-embed">📹</div>
4271            <div class="video-info">
4272                <h3 class="video-title lang-ko">별빛 - 뮤직 비디오</h3>
4273                <h3 class="video-title lang-en">Byeolbit - Music Video</h3>
4274                <p class="lang-ko">유튜브에서 최신 뮤직비디오와 라이브 공연을 시청하세요</p>
4275                <p class="lang-en">Watch our latest music videos and live performances on YouTube</p>
4276                <a href="https://www.youtube.com/@ByeolbitOfficial" target="_blank" class="video-link lang-ko">유튜브에서 보기 →</a>
4277                <a href="https://www.youtube.com/@ByeolbitOfficial" target="_blank" class="video-link lang-en">Watch on YouTube →</a>
4278            </div>
4279        </div>
4280        <div class="video-card">
4281            <div class="video-embed">🎬</div>
4282            <div class="video-info">
4283                <h3 class="video-title lang-ko">짧은 영상</h3>
4284                <h3 class="video-title lang-en">Short Videos</h3>
4285                <p class="lang-ko">TikTok과 Instagram에서 비하인드와 음악 클립을 팔로우하세요</p>
4286                <p class="lang-en">Follow our behind-the-scenes and music clips on TikTok and Instagram</p>
4287                <a href="https://www.tiktok.com/@byeolbitofficial" target="_blank" class="video-link lang-ko">TikTok에서 보기 →</a>
4288                <a href="https://www.tiktok.com/@byeolbitofficial" target="_blank" class="video-link lang-en">Watch on TikTok →</a>
4289            </div>
4290        </div>
4291    </div>
4292        <div class="view-all-btn">
4293            <a href="https://www.youtube.com/@ByeolbitOfficial" target="_blank" class="lang-ko">유튜브에서 더보기</a>
4294            <a href="https://www.youtube.com/@ByeolbitOfficial" target="_blank" class="lang-en">Watch More on YouTube</a>
4295        </div>
4296    </div>
4297</section>
4298
4299<section class="section" id="news">
4300    <div class="container">
4301        <h2 class="section-title lang-ko">최신 소식</h2>
4302        <h2 class="section-title lang-en">Latest News</h2>
4303        <div class="news-grid" id="newsGrid">
4304        <div class="news-card">
4305            <div class="news-image">📰</div>
4306            <div class="news-content">
4307                <h3 class="news-title lang-ko">별빛의 세계에 오신 것을 환영합니다</h3>
4308                <h3 class="news-title lang-en">Welcome to Byeolbit's World</h3>
4309                <p class="news-excerpt lang-ko">소셜 미디어에서 밴드, 신곡, 라이브 공연에 대한 최신 뉴스를 팔로우하세요</p>
4310                <p class="news-excerpt lang-en">Follow us on social media for latest news about the band, new releases, and live concerts</p>
4311                <a href="https://www.instagram.com/byeolbitmusicband/" target="_blank" class="read-more lang-ko">Instagram 팔로우 →</a>
4312                <a href="https://www.instagram.com/byeolbitmusicband/" target="_blank" class="read-more lang-en">Follow on Instagram →</a>
4313            </div>
4314        </div>
4315        <div class="news-card">
4316            <div class="news-image">🎤</div>
4317            <div class="news-content">
4318                <h3 class="news-title lang-ko">아티스트 소개</h3>
4319                <h3 class="news-title lang-en">Meet the Artists</h3>
4320                <p class="news-excerpt lang-ko">12명의 아티스트 이야기와 연습 및 공연 순간을 페이지에서 확인하세요</p>
4321                <p class="news-excerpt lang-en">Discover the stories of our 12 artists and watch rehearsal and concert moments on our pages</p>
4322                <a href="https://facebook.com/byeolbitofficial" target="_blank" class="read-more lang-ko">페이지 방문 →</a>
4323                <a href="https://facebook.com/byeolbitofficial" target="_blank" class="read-more lang-en">Visit Our Page →</a>
4324            </div>
4325        </div>
4326    </div>
4327    </div>
4328</section>
4329
4330<footer class="main-footer">
4331    <div class="container">
4332        <div class="social-links">
4333            <a href="https://www.youtube.com/@ByeolbitOfficial" target="_blank" class="social-link">▶</a>
4334            <a href="https://www.instagram.com/byeolbitmusicband/" target="_blank" class="social-link">📷</a>
4335            <a href="https://www.tiktok.com/@byeolbitofficial" target="_blank" class="social-link">🎵</a>
4336            <a href="https://facebook.com/byeolbitofficial" target="_blank" class="social-link">👥</a>
4337        </div>
4338        <p class="lang-ko">&copy; 2025 별빛 Byeolbit. All rights reserved.</p>
4339        <p class="lang-en">&copy; 2025 Byeolbit. All rights reserved.</p>
4340    </div>
4341</footer>
4342
4343
4344
4345
4346<div id="bioPages">
4347<div id="bio-dongha-yoon" class="bio-page">
4348            <div class="bio-header">
4349                <div class="container">
4350                    <a href="#artists" data-action="back" class="back-button lang-ko">← 아티스트로 돌아가기</a>
4351                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
4352                </div>
4353            </div>
4354            
4355            <div class="bio-content">
4356                <div class="bio-card">
4357                    <div class="bio-image-section">
4358                        <img src="https://media.echovira.com/byeolbit/byeolbit_dongha_yoon_male_singer_portrait_0.png" alt="Dongha Yoon" class="bio-artist-image"
4359                srcset="https://media.echovira.com/byeolbit/byeolbit_dongha_yoon_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_dongha_yoon_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_dongha_yoon_male_singer_portrait_0-full.
4359webp 1024w"
4360                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
4361                    </div>
4362                    <div class="bio-text-section">
4363                        <div class="bio-artist-title">
4364                            <h1 class="lang-ko">윤동하</h1>
4365                            <h1 class="lang-en">Dongha Yoon</h1>
4366                            <div class="stage-name">"Dongha" • 27세 / Age 27</div>
4367                            <div class="role lang-ko">보컬</div>
4368                            <div class="role lang-en">Male Singer</div>
4369                        </div>
4370                        <div class="bio-description lang-ko">
4371                            <p>별빛의 남성 보컬, 윤동하(Dongha) — 27세 바리톤의 따뜻하고 풍성한 음색으로 무대를 가득 채우는 목소리를 소개합니다. 깊은 중저음의 안정감과 감성적인 표현력으로 밴드 사운드의 중심을 잡아주며, 곧 공개될 신곡에서 그의 진가를 확인할 수 있을 거예요.</p><p>바리톤 앵커: 풍부하고 따뜻한 톤으로 밴드의 사운드를 기반으로 합니다. Dongha의 낮은 레지스터 따뜻함과 정확한 프레이징은 편곡을 채우고 하모니를 더 풍부하게 만들고 코러스가 더 무게감 있게 들리게 합니다. 무대에서 그의 역동적인 제어와 절제된 존재감은 조용한 순간을 기억에 남는 피크로 바꾸고 그룹의 라이브 에너지를 이끕니다.</p><p>보컬리스트로서 그는 탄탄한 바리톤 음역, 미묘한 프레이징, 그리고 재즈와 인디 소울에 대한 스타일적 고개를 끄덕이는 신중한 다이나믹을 가져옵니다. 그의 명확한 딕션과 꾸준한 호흡 지원은 그가 친밀한 구절과 강력한 후렴구 사이를 부드럽게 이동할 수 있게 합니다. 지금 팔로우하고, 댓글로 응원 한마디 남겨주세요 — Dongha의 목소리를 함께 들어보세요!</p>
4372                        </div>
4373                        <div class="bio-description lang-en">
4374                            <p>Meet Dongha Yoon (Dongha), 27 — the baritone anchor with a rich, warm tone and stage-filling presence. His deep, steady low register and emotional phrasing hold Byeolbit's sound together, and our upcoming releases will spotlight his vocal craftsmanship and energy.</p><p>He is the baritone anchor: a rich, warm tone that grounds the band's sound. Dongha's low-register warmth and precise phrasing fill out arrangements, making harmonies fuller and choruses hit with more weight. On stage, his dynamic control and measured presence turn quiet moments into memorable peaks, steering the group's live energy.</p><p>As a vocalist he brings a solid baritone range, nuanced phrasing, and careful dynamics, with stylistic nods to jazz and indie soul. His clear diction and steady breath support let him move smoothly between intimate verses and powerful refrains. Follow the band, stream the new tracks when they drop, and leave a comment to show your support — let's celebrate his voice together!</p>
4375                        </div>
4376                    </div>
4377                </div>
4378            </div>
4379        </div>
4380<div id="bio-eunji-kang" class="bio-page">
4381            <div class="bio-header">
4382                <div class="container">
4383                    <a href="#artists" data-action="back" class="back-button lang-ko">← 아티스트로 돌아가기</a>
4384                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
4385                </div>
4386            </div>
4387            
4388            <div class="bio-content">
4389                <div class="bio-card">
4390                    <div class="bio-image-section">
4391                        <img src="https://media.echovira.com/byeolbit/byeolbit_eunji_kang_female_singer_portrait_0.png" alt="Eunji Kang" class="bio-artist-image"
4392                srcset="https://media.echovira.com/byeolbit/byeolbit_eunji_kang_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_eunji_kang_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_eunji_kang_female_singer_portrait_0-full.
4392webp 1024w"
4393                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
4394                    </div>
4395                    <div class="bio-text-section">
4396                        <div class="bio-artist-title">
4397                            <h1 class="lang-ko">강은지</h1>
4398                            <h1 class="lang-en">Eunji Kang</h1>
4399                            <div class="stage-name">"Eunji" • 26세 / Age 26</div>
4400                            <div class="role lang-ko">보컬</div>
4401                            <div class="role lang-en">Female Singer</div>
4402                        </div>
4403                        <div class="bio-description lang-ko">
4404                            <p>강은지(Eunji), 26세 — 별빛의 강력한 메조 보이스와 압도적인 무대 존재감. 그녀의 풍부하고 따뜻한 메조 음색은 감성적인 명료함으로 편곡을 꿰뚫고, 소울풀한 프레이징과 대담한 에너지를 혼합하여 모든 노래를 끌어올립니다. 무대에서 그녀는 순간을 소유합니다 — 역동적인 런, 통제된 파워, 그리고 밴드와 관객과의 자기력 있는 연결.</p><p>강력한 메조 보이스와 밴드를 형성하는 지휘하는 무대 존재감. 그녀의 따뜻하고 공명하는 메조 음색, 넓은 음역, 그리고 정확한 프레이징은 각 노래에 감정적 명료함을 가져옵니다. 그녀는 통제된 다이나믹과 소울풀한 굴절을 균형잡으며 R&B와 인디 팝 영향을 끌어들여 별빛의 사운드를 색칠합니다.</p><p>무대에서 Eunji는 집중된 리드와 타이트한 하모니로 편곡을 앵커하여 앙상블 균형을 유지하면서 크레셴도를 들어올립니다. 스튜디오에서 그녀의 보컬 결정은 편곡 선택과 질감을 안내하여 멜로디가 더 큰 영향을 미치도록 돕습니다. Eunji의 보컬은 별빛의 사운드의 초석이며, 멜로디를 형성하고 하모니에 깊이를 더하며 밴드의 감정적 스토리텔링을 주도합니다.</p>
4405                        </div>
4406                        <div class="bio-description lang-en">
4407                            <p>Meet Eunji Kang (Eunji), 26 — the powerful mezzo voice and commanding stage presence of Byeolbit. Her rich, warm mezzo timbre cuts through arrangements with emotional clarity, blending soulful phrasing and bold energy that lift every song. Onstage she owns the moment—dynamic runs, controlled power, and a magnetic connection with the band and audience.</p><p>A powerful mezzo voice and a commanding stage presence that shapes the band. Her warm, resonant mezzo timbre, wide range, and precise phrasing bring emotional clarity to each song. She balances controlled dynamics with soulful inflection, drawing on R&B and indie-pop influences to color Byeolbit's sound.</p><p>On stage Eunji anchors arrangements with focused leads and tight harmonies, lifting crescendos while keeping ensemble balance. In the studio her vocal decisions guide arrangement choices and texture, helping melodies land with more impact. Eunji's vocals are a cornerstone of Byeolbit's sound, shaping melodies, adding depth to harmonies, and driving the band's emotional storytelling.</p>
4408                        </div>
4409                    </div>
4410                </div>
4411            </div>
4412        </div>
4413<div id="bio-hana-lim" class="bio-page">
4414            <div class="bio-header">
4415                <div class="container">
4416                    <a href="#artists" data-action="back" class="back-button lang-ko">← 아티스트로 돌아가기</a>
4417                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
4418                </div>
4419            </div>
4420            
4421            <div class="bio-content">
4422                <div class="bio-card">
4423                    <div class="bio-image-section">
4424                        <img src="https://media.echovira.com/byeolbit/byeolbit_hana_lim_female_singer_portrait_1.png" alt="Hana Lim" class="bio-artist-image"
4425                srcset="https://media.echovira.com/byeolbit/byeolbit_hana_lim_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_hana_lim_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_hana_lim_female_singer_portrait_1-full.
4425webp 1024w"
4426                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
4427                    </div>
4428                    <div class="bio-text-section">
4429                        <div class="bio-artist-title">
4430                            <h1 class="lang-ko">임하나</h1>
4431                            <h1 class="lang-en">Hana Lim</h1>
4432                            <div class="stage-name">"Hana" • 27세 / Age 27</div>
4433                            <div class="role lang-ko">보컬</div>
4434                            <div class="role lang-en">Female Singer</div>
4435                        </div>
4436                        <div class="bio-description lang-ko">
4437                            <p>27세 하나 임(Hana), 별빛의 메인 보컬을 소개합니다 — 감성 발라드 보이스와 깊은 울림으로 밴드 사운드를 이끄는 목소리예요. 풍부한 음색과 섬세한 표현력, 넓은 다이내믹과 무대 에너지로 곡의 중심을 잡아주며 곧 공개될 곡에서 그녀의 보컬이 어떻게 빛나는지 확인하실 수 있어요.</p><p>그녀의 목소리는 깊은 공명을 지닌 감정적 발라드 음색입니다. 별빛의 리드 보컬리스트로서 Hana의 따뜻한 알토 음색과 넓은 음역은 밴드의 멜로디를 초점에 맞춥니다. 그녀의 프레이징과 다이나믹 컨트롤은 조용한 순간을 그리핑 크레센도로 바꿉니다. 무대에서 그녀는 친밀한 전달과 자신감 있는 존재를 균형잡으며 소울과 인디 포크 영향을 끌어냅니다.</p><p>그녀의 보컬 색상과 타이밍은 밴드의 편곡을 형성하고 모든 코러스에 군중을 연결하는 라이브 에너지를 연료로 공급합니다. 새 싱글을 기대해 주세요 — 프로필 링크에서 미리 듣고 댓글로 응원해 주세요, 팔로우도 잊지 마세요!</p>
4438                        </div>
4439                        <div class="bio-description lang-en">
4440                            <p>Meet Hana Lim (Hana), 27 — the female lead singer of Byeolbit, whose emotional ballad voice and deep resonance shape the band's sound. Her rich timbre, expressive phrasing and wide dynamic range bring each song to life; upcoming releases will showcase her vocal control, intensity and stage presence.</p><p>Her voice is an emotional ballad timbre with deep resonance. As Byeolbit's lead vocalist, Hana's warm alto timbre and wide range bring the band's melodies into focus; her phrasing and dynamic control turn quiet moments into gripping crescendos. On stage she balances intimate delivery with confident presence, drawing from soul and indie folk influences.</p><p>Her vocal color and timing shape the band's arrangements and fuel the live energy that connects the crowd to every chorus. Stay tuned and show love — stream the new single via the link in bio, follow for updates and leave a comment to cheer her on!</p>
4441                        </div>
4442                    </div>
4443                </div>
4444            </div>
4445        </div>
4446<div id="bio-hyunwoo-lee" class="bio-page">
4447            <div class="bio-header">
4448                <div class="container">
4449                    <a href="#artists" data-action="back" class="back-button lang-ko">← 아티스트로 돌아가기</a>
4450                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
4451                </div>
4452            </div>
4453            
4454            <div class="bio-content">
4455                <div class="bio-card">
4456                    <div class="bio-image-section">
4457                        <img src="https://media.echovira.com/byeolbit/byeolbit_hyunwoo_lee_male_singer_portrait_0.png" alt="Hyunwoo Lee" class="bio-artist-image"
4458                srcset="https://media.echovira.com/byeolbit/byeolbit_hyunwoo_lee_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_hyunwoo_lee_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_hyunwoo_lee_male_singer_portrait_0-full.webp 1024w"
4459                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
4460                    </div>
4461                    <div class="bio-text-section">
4462                        <div class="bio-artist-title">
4463                            <h1 class="lang-ko">이현우</h1>
4464                            <h1 class="lang-en">Hyunwoo Lee</h1>
4465                            <div class="stage-name">"Hyunwoo" • 23세 / Age 23</div>
4466                            <div class="role lang-ko">보컬</div>
4467                            <div class="role lang-en">Male Singer</div>
4468                        </div>
4469                        <div class="bio-description lang-ko">
4470                            <p>별빛의 23세 보컬, 현우(Lee Hyunwoo) — 부드러운 팝 톤과 장난기 넘치는 에너지로 Byeolbit의 음악을 채웁니다. 그가 가진 매끈한 음색과 풍부한 표현력은 밴드의 반짝이는 하모니의 중심을 잡아주며 무대에서 강한 존재감을 선사합니다.</p><p>장난기 있는 가수로 부드러운 팝 톤으로 Hyunwoo는 밝은 프레이징을 따뜻한 음색과 혼합합니다. 그는 유연한 음역과 통제된 다이나믹을 가지고 있으며 현대 팝과 인디 R&B 영향을 끌어냅니다. 무대에서 그는 장난기 있는 카리스마와 집중된 전달을 결합하여 조용한 구절을 기억에 남는 싱얼롱으로 바꿉니다.</p><p>별빛의 보컬리스트로서 그의 톤과 프레이징은 그룹의 멜로딕 아이덴티티를 정의하는 데 도움이 되며 라이브 에너지를 친밀한 순간에서 군중 전체의 훅으로 밀어냅니다. 곧 공개될 신곡에서 현우의 보컬을 꼭 확인해 주세요, 팔로우하고 댓글로 응원 메시지를 남겨주세요—당신의 한 마디가 큰 힘이 됩니다!</p>
4471                        </div>
4472                        <div class="bio-description lang-en">
4473                            <p>Meet Hyunwoo (Hyunwoo Lee), 23 — the playful singer with a smooth pop tone whose lively energy fills Byeolbit's sound. His silky voice and expressive delivery anchor the band's luminous harmonie
4473s and bring electric presence to every performance.</p><p>A playful singer with a smooth pop tone, Hyunwoo blends bright phrasing with warm timbre. He has a flexible range and controlled dynamics, drawing on contemporary pop and indie R&B influences. On stage he pairs playful charisma with focused delivery, turning quieter verses into memorable singalongs.</p><p>As Byeolbit's vocalist his tone and phrasing help define the group's melodic identity and push the live energy from intimate moments to crowd-wide hooks. New music is coming soon — follow, stream when it's out, and drop your favorite lyric below to show love!</p>
4474                        </div>
4475                    </div>
4476                </div>
4477            </div>
4478        </div>
4479<div id="bio-jisoo-kim" class="bio-page">
4480            <div class="bio-header">
4481                <div class="container">
4482                    <a href="#artists" data-action="back" class="back-button lang-ko">← 아티스트로 돌아가기</a>
4483                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
4484                </div>
4485            </div>
4486            
4487            <div class="bio-content">
4488                <div class="bio-card">
4489                    <div class="bio-image-section">
4490                        <img src="https://media.echovira.com/byeolbit/byeolbit_jisoo_kim_male_singer_portrait_1.png" alt="Jisoo Kim" class="bio-artist-image"
4491                srcset="https://media.echovira.com/byeolbit/byeolbit_jisoo_kim_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_jisoo_kim_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_jisoo_kim_male_singer_portrait_1-full.webp 1024w"
4492                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
4493                    </div>
4494                    <div class="bio-text-section">
4495                        <div class="bio-artist-title">
4496                            <h1 class="lang-ko">김지수</h1>
4497                            <h1 class="lang-en">Jisoo Kim</h1>
4498                            <div class="stage-name">"Jisoo" • 24세 / Age 24</div>
4499                            <div class="role lang-ko">보컬</div>
4500                            <div class="role lang-en">Male Singer</div>
4501                        </div>
4502                        <div class="bio-description lang-ko">
4503                            <p>24세의 남자 보컬 김지수(Jisoo), 별빛의 밝은 목소리와 청춘의 에너지로 무대를 밝힙니다. 맑고 청아한 톤과 폭발적인 에너지가 어우러진 보컬로 Byeolbit의 사운드를 한층 더 빛나게 합니다. 팀의 중심에서 멜로디와 감성을 이끌며, 곧 공개될 신곡에서 그의 다채로운 보컬 컬러와 진심 어린 표현을 들려드릴 예정이에요 — 기대해 주세요!</p><p>청춘의 목소리와 밝은 에너지가 진화하는 사운드의 중심에 있습니다. 리드 보컬리스트로서 그의 따뜻한 테너 음색, 넓은 음역, 선명한 프레이징 그리고 다이나믹 컨트롤은 인디 팝과 R&B 프레이징을 끌어들여 친밀한 뉘앙스와 강력한 코러스를 모두 가져옵니다. 무대에서 Jisoo의 타이밍과 존재감은 밴드의 라이브 에너지를 높이고 모든 세트의 흐름을 조종합니다.</p><p>음악을 사랑하는 여러분, 좋아요와 댓글로 응원 남겨주시고 스트리밍으로 함께해 주세요. 그의 보컬 선택이 편곡과 순간을 형성하는 방법을 느껴보세요.</p>
4504                        </div>
4505                        <div class="bio-description lang-en">
4506                            <p>Introducing Jisoo (stage name: Jisoo), 24-year-old male singer of Byeolbit — his youthful voice and bright energy light up the band's sound. With a clear, airy tone and powerful presence, Jisoo's vocals elevate Byeolbit's melodies and carry the emotional core of our songs. You'll hear his versatile vocal colors and heartfelt delivery on our upcoming release — get ready to feel every note.</p><p>His youthful voice and bright energy sit at the center of our evolving sound. As lead vocalist, his warm tenor timbre, wide range, crisp phrasing and dynamic control bring both intimate nuance and powerful choruses, drawing on indie-pop and R&B phrasing. On stage, Jisoo's timing and presence elevate the band's live energy and steer the flow of every set.</p><p>Music lovers, show some love: follow, stream the new tracks when they drop, and leave a comment to tell us which performance moves you most. Hear him on our latest singles and live clips to feel how his vocal choices shape arrangements and moments.</p>
4507                        </div>
4508                    </div>
4509                </div>
4510            </div>
4511        </div>
4512<div id="bio-jiwon-cho" class="bio-page">
4513            <div class="bio-header">
4514                <div class="container">
4515                    <a href="#artists" data-action="back" class="back-button lang-ko">← 아티스트로 돌아가기</a>
4516                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
4517                </div>
4518            </div>
4519            
4520            <div class="bio-content">
4521                <div class="bio-card">
4522                    <div class="bio-image-section">
4523                        <img src="https://media.echovira.com/byeolbit/byeolbit_jiwon_cho_composer_lyricist_portrait_1.png" alt="Jiwon Cho" class="bio-artist-image"
4524                srcset="https://media.echovira.com/byeolbit/byeolbit_jiwon_cho_composer_lyricist_portrait_1-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_jiwon_cho_composer_lyricist_portrait_1-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_jiwon_cho_composer_lyricist_portrait_1-full.
4524webp 1024w"
4525                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
4526                    </div>
4527                    <div class="bio-text-section">
4528                        <div class="bio-artist-title">
4529                            <h1 class="lang-ko">조지원</h1>
4530                            <h1 class="lang-en">Jiwon Cho</h1>
4531                            <div class="stage-name">"Jiwon" • 26세 / Age 26</div>
4532                            <div class="role lang-ko">작곡가 & 작사가</div>
4533                            <div class="role lang-en">Composer & Lyricist</div>
4534                        </div>
4535                        <div class="bio-description lang-ko">
4536                            <p>지원(Jiwon) — 별빛의 26세 작곡가이자 작사가, 감성적 멜로디와 시적인 가사로 밴드의 사운드를 완성합니다. 클래식한 코드 진행과 섬세한 편곡 감각으로 곡의 뼈대를 세우고, 가사에서는 장면과 감정을 섬세하게 엮어냅니다.</p><p>진심 어린, 영화 같은 한국어 가사를 쓰는 시적인 작사가. 작곡가로서 Jiwon은 사려 깊은 모티프 개발과 각 노래의 감정적 아크를 조종하는 시그니처 진행으로 멜로디와 하모닉 텍스처를 형성합니다. 작사가로서 Jiwon은 친밀한 스토리텔링과 생생한 이미지를 만들어 자연스러운 한국어 케이던스와 신중한 라임/플로우를 사용하여 명확한 감정적 관점을 드러냅니다.</p><p>그 조합은 별빛의 스튜디오 사운드를 정의하고 밴드의 라이브 에너지를 연료로 공급하며 무대에서 조용한 순간을 영화 같은 피크로 바꿉니다. 곧 공개될 신곡에서 지원의 창작 과정과 서정성이 어떻게 빛나는지 직접 확인하실 수 있어요 — 많은 기대 부탁드립니다. 지금 바로 좋아요와 댓글로 응원해 주시고, 더 많은 소식을 원하시면 팔로우도 잊지 마세요!</p>
4537                        </div>
4538                        <div class="bio-description lang-en">
4539                            <p>Jiwon (stage name Jiwon) — Byeolbit's 26-year-old composer & lyricist who shapes the band's sound with lyrical melodies and cinematic storytelling. His composition craft—thoughtful chord choices, evocative arrangements, and a keen harmonic sense—builds the foundation of our music, while his lyrics paint vivid emotional scenes.</p><p>A poetic lyricist who writes heartfelt, cinematic Korean lyrics. As a composer, Jiwon shapes melodies and harmonic textures with thoughtful motif development and signature progressions that steer each song's emotional arc. As a lyricist, Jiwon crafts intimate storytelling and vivid imagery, using natural Korean cadence and careful rhyme/flow to reveal a clear emotional perspective.</p><p>That combination defines Byeolbit's studio sound and fuels the band's live energy, turning quiet moments into cinematic peaks on stage. You'll hear his creative voice shine in our upcoming single; it's a new chapter in Byeolbit's sonic journey and we can't wait to share it with you. Listen, like, comment, and follow to support Jiwon and the band — your feedback and love make all the difference!</p>
4540                        </div>
4541                    </div>
4542                </div>
4543            </div>
4544        </div>
4545<div id="bio-mina-jeon" class="bio-page">
4546            <div class="bio-header">
4547                <div class="container">
4548                    <a href="#artists" data-action="back" class="back-button lang-ko">← 아티스트로 돌아가기</a>
4549                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
4550                </div>
4551            </div>
4552            
4553            <div class="bio-content">
4554                <div class="bio-card">
4555                    <div class="bio-image-section">
4556                        <img src="https://media.echovira.com/byeolbit/byeolbit_mina_jeon_female_singer_portrait_0.png" alt="Mina Jeon" class="bio-artist-image"
4557                srcset="https://media.echovira.com/byeolbit/byeolbit_mina_jeon_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_mina_jeon_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_mina_jeon_female_singer_portrait_0-full.
4557webp 1024w"
4558                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
4559                    </div>
4560                    <div class="bio-text-section">
4561                        <div class="bio-artist-title">
4562                            <h1 class="lang-ko">전미나</h1>
4563                            <h1 class="lang-en">Mina Jeon</h1>
4564                            <div class="stage-name">"Mina" • 23세 / Age 23</div>
4565                            <div class="role lang-ko">보컬</div>
4566                            <div class="role lang-en">Female Singer</div>
4567                        </div>
4568                        <div class="bio-description lang-ko">
4569                            <p>별빛의 23세 보컬, 전미나(Mina)가 밝고 달콤한 보컬과 장난기 가득한 매력으로 무대를 환히 밝힙니다. 그녀의 맑고 경쾌한 음색부터 감성적인 고음까지 이어지는 보컬은 밴드 사운드에 따스한 색채와 에너지를 더해 줍니다.</p><p>장난기 있는 매력과 반짝이는 밝고 달콤한 보컬을 가져옵니다. 밴드의 보컬리스트로서 Mina의 명확하고 벨 같은 음색과 민첩한 음역은 친밀한 프레이징, 표현력 있는 다이나믹, 그리고 인디 팝과 클래식 K-발라드 영향에 의해 형성된 자신감 있는 무대 존재감을 가져옵니다. 그녀의 목소리는 별빛의 사운드를 형성합니다 — 멜로디를 앵커하고, 하모니를 들어올리며, 무대에서 조용한 순간을 싱얼롱 피크로 바꿉니다.</p><p>무대에서 그녀는 방을 읽고 부드러운 뉘앙스와 치솟는 훅 사이를 이동하여 밴드의 에너지를 증폭시킵니다. 새 싱글에서 미나의 목소리가 어떻게 빛나는지 꼭 들어보고 응원 댓글과 좋아요, 친구 태그로 기대를 나눠 주세요 — 프로필 링크에서 미리 듣기 또는 스트리밍하세요!</p>
4570                        </div>
4571                        <div class="bio-description lang-en">
4572                            <p>Meet Mina Jeon — Mina, the 23-year-old female vocalist of Byeolbit, whose playful charm and bright, sweet vocals light up every stage. From clear, buoyant tones to emotional high notes, her voice adds warm color and energy to the band's sound, and her talent will shine even more on our upcoming tracks.</p><p>She brings playful charm with bright, sweet vocals that sparkle. As the band's vocalist, Mina's clear, bell-like timbre and agile range bring intimate phrasing, expressive dynamics, and a confident stage presence shaped by indie-pop and classic K-ballad influences. Her voice shapes Byeolbit's sound—anchoring melodies, lifting harmonies, and turning quiet moments into sing-along peaks on stage.</p><p>On stage she reads the room, moving between soft nuance and soaring hooks to amplify the band's energy. Listen, stream, and show love — comment, like, and tag friends to spread the word; tap the link in bio to pre-save or hear the new single now!</p>
4573                        </div>
4574                    </div>
4575                </div>
4576            </div>
4577        </div>
4578<div id="bio-minjun-park" class="bio-page">
4579            <div class="bio-header">
4580                <div class="container">
4581                    <a href="#artists" data-action="back" class="back-button lang-ko">← 아티스트로 돌아가기</a>
4582                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
4583                </div>
4584            </div>
4585            
4586            <div class="bio-content">
4587                <div class="bio-card">
4588                    <div class="bio-image-section">
4589                        <img src="https://media.echovira.com/byeolbit/byeolbit_minjun_park_male_singer_portrait_0.png" alt="Minjun Park" class="bio-artist-image"
4590                srcset="https://media.echovira.com/byeolbit/byeolbit_minjun_park_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_minjun_park_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_minjun_park_male_singer_portrait_0-full.
4590webp 1024w"
4591                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
4592                    </div>
4593                    <div class="bio-text-section">
4594                        <div class="bio-artist-title">
4595                            <h1 class="lang-ko">박민준</h1>
4596                            <h1 class="lang-en">Minjun Park</h1>
4597                            <div class="stage-name">"Minjun" • 25세 / Age 25</div>
4598                            <div class="role lang-ko">보컬</div>
4599                            <div class="role lang-en">Male Singer</div>
4600                        </div>
4601                        <div class="bio-description lang-ko">
4602                            <p>25세 보컬리스트 박민준(예명 Minjun) — 별빛의 카리스마 리더, 부드럽고 파워풀한 보컬로 밴드 사운드를 이끕니다. 맑은 음색과 폭발적인 감정 전달로 무대와 스튜디오 모두에서 곡의 중심을 잡는 그의 목소리가 곧 공개될 신곡에서 빛을 발할 거예요.</p><p>부드럽고 강력한 보컬을 가진 카리스마 있는 리더. 별빛의 프론트맨으로서 그의 따뜻한 테너 음색과 넓은 음역은 밴드의 멜로디를 앵커하는 동시에 표현력 있는 프레이징과 신중한 다이나믹 컨트롤은 조용한 순간을 치솟는 코러스로 바꿉니다. 그의 무대 존재감 — 차분한 집중과 갑작스러운 에너지 폭발 — 은 라이브 강도를 주도하며 그의 보컬 색상에서 R&B와 인디 팝 영향을 들을 수 있습니다. 미묘한 즉흥 연주와 명확한 딕션은 각 공연을 즉각적이고 생생하게 느끼게 만듭니다.</p><p>Minjun의 보컬 선택은 편곡과 그룹의 전반적인 소닉 방향을 형성하여 별빛에 광택과 감정적 추진력을 모두 제공합니다. 지금 바로 팔로우하고 프로필 링크에서 프리세이브\xb7예고를 확인하며 좋아요와 댓글로 마음껏 응원해주세요!</p>
4603                        </div>
4604                        <div class="bio-description lang-en">
4605                            <p>Meet Minjun Park (stage name: Minjun), 25 — Byeolbit's charismatic leader with smooth, powerful vocals that shape the band's signature sound. His clear tone and emotive delivery drive both live stages and studio recordings, and his voice will shine on our upcoming release — get ready for a new level of Byeolbit energy.</p><p>A charismatic leader with smooth, powerful vocals. As Byeolbit's frontman, his warm tenor timbre and broad range anchor the band's melodies, while expressive phrasing and careful dynamic control turn quiet moments into soaring choruses. His stage presence—calm focus with sudden bursts of energy—drives the live intensity, and you can hear R&B and indie-pop influences in his vocal color. Subtle improvisation and clear diction make each performance feel immediate and lived-in.</p><p>Minjun's vocal choices shape arrangements and the group's overall sonic direction, giving Byeolbit both polish and emotional push. Follow us, pre-save via the link in our bio, and show your love with likes and comments — music lovers, let's celebrate his voice together!</p>
4606                        </div>
4607                    </div>
4608                </div>
4609            </div>
4610        </div>
4611<div id="bio-seoyeon-kwon" class="bio-page">
4612            <div class="bio-header">
4613                <div class="container">
4614                    <a href="#artists" data-action="back" class="back-button lang-ko">← 아티스트로 돌아가기</a>
4615                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
4616                </div>
4617            </div>
4618            
4619            <div class="bio-content">
4620                <div class="bio-card">
4621                    <div class="bio-image-section">
4622                        <img src="https://media.echovira.com/byeolbit/byeolbit_seoyeon_kwon_multi_instrumentalist_portrait_0.png" alt="Seoyeon Kwon" class="bio-artist-image"
4623                srcset="https://media.echovira.com/byeolbit/byeolbit_seoyeon_kwon_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_seoyeon_kwon_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_seoyeon_kwon_multi_instrumentalist_portrait_0-full.
4623webp 1024w"
4624                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
4625                    </div>
4626                    <div class="bio-text-section">
4627                        <div class="bio-artist-title">
4628                            <h1 class="lang-ko">권서연</h1>
4629                            <h1 class="lang-en">Seoyeon Kwon</h1>
4630                            <div class="stage-name">"Seoyeon" • 25세 / Age 25</div>
4631                            <div class="role lang-ko">멀티 악기 연주자</div>
4632                            <div class="role lang-en">Multi-Instrumentalist</div>
4633                        </div>
4634                        <div class="bio-description lang-ko">
4635                            <p>별빛의 멀티-악기 연주자 권서연(Seoyeon), 25세 — 마법 같은 손으로 밴드 사운드를 완성합니다. 그녀는 기타, 키보드, 신디사이저를 자유자재로 다루며 세심한 연주와 즉흥적인 감각으로 곡의 결을 바꿔놓는 연주자예요.</p><p>K-팝 멜로디를 록과 전자 레이어와 혼합하는 실험적인 음악가. 연주자로서 그녀는 정밀한 기술, 명확한 아티큘레이션, 그리고 리드믹 포켓을 결합하여 무대에서 특징적인 리프와 자발적인 즉흥 연주를 만듭니다. 작곡가로서 그녀는 간결한 멜로디, 예상치 못한 하모닉 턴, 그리고 노래 전체에 걸쳐 모티프를 개발하는 편곡에 집중합니다. 프로듀서로서 그녀는 레이어드 텍스처와 다이나믹 대비를 디자인하여 세션 편곡과 밴드의 소닉 아이덴티티를 안내합니다.</p><p>그녀의 연주와 프로덕션 선택은 별빛에 그릿, 시머, 그리고 라이브 모멘텀의 대부분을 제공하며 스튜디오 아이디어를 역동적인 공연으로 바꿉니다. 곧 공개될 신곡에서 서연의 연주를 꼭 들어보세요 — 댓글로 어떤 악기 소리가 가장 기대되는지 알려주세요!</p>
4636                        </div>
4637                        <div class="bio-description lang-en">
4638                            <p>Meet Seoyeon Kwon (Seoyeon), Byeolbit's 25-year-old multi-instrumentalist — her "magical hands" shape the band's sound with guitar, keys and synths. Her precise technique, improvisational spark and instrumental mastery add layers that push our music from dreamy K-pop textures to richer, experimental horizons.</p><p>An experimental musician who blends K-pop melodies with rock and electronic layers. As an instrumentalist she combines precise technique, clear articulation, and rhythmic pocket to craft hallmark riffs and spontaneous improvisations on stage. As a composer she focuses on concise melodies, unexpected harmonic turns, and arrangements that develop motifs across a song. As a producer she designs layered textures and dynamic contrasts, guiding session arrangements and the band's sonic identity.</p><p>Her playing and production choices give Byeolbit much of its grit, shimmer, and live momentum, turning studio ideas into kinetic performances. Don't miss the upcoming single showcasing her playing — listen, share which instrument you're most excited to hear in the comments, and follow for behind-the-scenes clips!</p>
4639                        </div>
4640                    </div>
4641                </div>
4642            </div>
4643        </div>
4644<div id="bio-soojin-han" class="bio-page">
4645            <div class="bio-header">
4646                <div class="container">
4647                    <a href="#artists" data-action="back" class="back-button lang-ko">← 아티스트로 돌아가기</a>
4648                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
4649                </div>
4650            </div>
4651            
4652            <div class="bio-content">
4653                <div class="bio-card">
4654                    <div class="bio-image-section">
4655                        <img src="https://media.echovira.com/byeolbit/byeolbit_soojin_han_female_singer_portrait_0.png" alt="Soojin Han" class="bio-artist-image"
4656                srcset="https://media.echovira.com/byeolbit/byeolbit_soojin_han_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_soojin_han_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_soojin_han_female_singer_portrait_0-full.
4656webp 1024w"
4657                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
4658                    </div>
4659                    <div class="bio-text-section">
4660                        <div class="bio-artist-title">
4661                            <h1 class="lang-ko">한수진</h1>
4662                            <h1 class="lang-en">Soojin Han</h1>
4663                            <div class="stage-name">"Soojin" • 25세 / Age 25</div>
4664                            <div class="role lang-ko">보컬</div>
4665                            <div class="role lang-en">Female Singer</div>
4666                        </div>
4667                        <div class="bio-description lang-ko">
4668                            <p>별빛의 25세 보컬, 한수진(무대명 Soojin)! 폭발적인 고음과 넓은 음역으로 무대를 채우는 디바 보컬. 맑고도 힘있는 톤, 감정을 끌어올리는 표현력과 무대를 전율시키는 에너지가 그녀의 시그니처입니다.</p><p>치솟는 음역과 표현력 있는 컨트롤을 가진 지휘하는 보컬리스트. 별빛의 여성 가수로서 그녀의 목소리는 이제 그룹의 멜로딕 아이덴티티와 스튜디오 텍스처를 정의합니다. 무대에서 그녀의 프레이징과 다이나믹 시프트는 밤마다 밴드의 크레센도와 군중의 에너지를 주도합니다.</p><p>그녀의 따뜻하지만 관통하는 음색, 넓은 음역, 정확한 프레이징 그리고 통제된 다이나믹은 재즈와 인디 팝 전통에서 끌어냅니다. 그녀는 구절에서 친밀한 스토리텔링과 코러스에서 모든 편곡을 들어올리는 치솟는 즉흥 런 사이의 균형을 맞춥니다. Soojin의 목소리는 별빛의 사운드에 드라마틱한 멜로디와 감성의 깊이를 더해 다음 신곡에서 더욱 빛날 예정이에요—곧 공개될 음악으로 그녀의 능력을 직접 느껴보세요.</p>
4669                        </div>
4670                        <div class="bio-description lang-en">
4671                            <p>Meet Soojin Han (stage name Soojin), age 25 — the diva vocalist with a soaring range who fills Byeolbit's sound with power and purity. Her clear yet powerful tone, emotive phrasing and stage energy give the band dramatic melody and depth; get ready for upcoming releases that put her vocals front and center.</p><p>A commanding vocalist with a soaring range and expressive control. As Byeolbit's female singer, her voice now defines the group's melodic identity and studio textures. Onstage, her phrasing and dynamic shifts drive the band's crescendos and the crowd's energy night after night.</p><p>Her warm yet penetrating timbre, wide range, precise phrasing and controlled dynamics draw from jazz and indie-pop traditions. She balances intimate storytelling in verses with soaring, improvised runs in choruses that lift every arrangement. Follow us, stream the new tracks when they drop, and tell us in the comments which line you're most excited to hear — more live clips and behind-the-scenes coming soon!</p>
4672                        </div>
4673                    </div>
4674                </div>
4675            </div>
4676        </div>
4677<div id="bio-taeyang-choi" class="bio-page">
4678            <div class="bio-header">
4679                <div class="container">
4680                    <a href="#artists" data-action="back" class="back-button lang-ko">← 아티스트로 돌아가기</a>
4681                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
4682                </div>
4683            </div>
4684            
4685            <div class="bio-content">
4686                <div class="bio-card">
4687                    <div class="bio-image-section">
4688                        <img src="https://media.echovira.com/byeolbit/byeolbit_taeyang_choi_male_singer_portrait_0.png" alt="Taeyang Choi" class="bio-artist-image"
4689                srcset="https://media.echovira.com/byeolbit/byeolbit_taeyang_choi_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_taeyang_choi_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_taeyang_choi_male_singer_portrait_0-full.
4689webp 1024w"
4690                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
4691                    </div>
4692                    <div class="bio-text-section">
4693                        <div class="bio-artist-title">
4694                            <h1 class="lang-ko">최태양</h1>
4695                            <h1 class="lang-en">Taeyang Choi</h1>
4696                            <div class="stage-name">"Taeyang" • 26세 / Age 26</div>
4697                            <div class="role lang-ko">보컬</div>
4698                            <div class="role lang-en">Male Singer</div>
4699                        </div>
4700                        <div class="bio-description lang-ko">
4701                            <p>별빛의 남성 보컬, 최태양(스테이지명 Taeyang) — 26세의 파워풀하고 드라마틱한 보이스를 소개합니다! 무대를 지배하는 깊은 중저음과 섬세한 고음 컨트롤로 곡의 감정선을 한층 끌어올리는 보컬리스트입니다. 그의 강렬한 에너지와 표현력은 Byeolbit 사운드의 중심을 만들어갑니다.</p><p>드라마틱한 무대 존재감을 가진 파워하우스 보컬리스트. 그의 역할은 밴드의 소닉 아이덴티티를 조종합니다: 그의 리드와 하모니는 멜로딕 포커스를 정의하고 편곡을 스위핑 다이나믹으로 밀어냅니다. 무대에서 그의 전달은 군중의 에너지를 높여 노래를 몰입적인 순간으로 바꿉니다.</p><p>보컬리스트로서 그는 따뜻하지만 날카로운 음색, 허쉬드 헤드 보이스에서 풀 스로티드 벨트로 이동하는 넓은 음역, 그리고 서정적 뉘앙스를 끌어내는 정확한 프레이징을 제공합니다. 그의 다이나믹 컨트롤과 소울 및 현대 록의 영향은 밴드에 그릿과 명료함을 모두 제공합니다. 곧 공개될 신곡에서 그의 보이스가 어떻게 빛나는지 직접 확인해 주세요 — 댓글로 응원과 기대를 남겨주세요!</p>
4702                        </div>
4703                        <div class="bio-description lang-en">
4704                            <p>Meet Taeyang Choi (stage name Taeyang), Byeolbit's 26-year-old male singer — a powerhouse vocalist with a dramatic presence and a voice that fills every space. With rich low tones, precise high-note control and raw emotional delivery, he shapes Byeolbit's signature sound and brings each song's story to life.</p><p>A powerhouse vocalist with a dramatic stage presence. His role steers the band's sonic identity: his leads and harmonies define melodic focus and push arrangements toward sweeping dynamics. Onstage, his delivery elevates the crowd's energy, turning songs into immersive moments.</p><p>As a vocalist he offers a warm yet edged timbre, a broad range that moves from hushed head voice to full-throated belts, and precise phrasing that brings out lyrical nuance. His dynamic control and influences from soul and contemporary rock give the band both grit and clarity. Get ready for new music that spotlights his vocal range and stage energy — follow, stream the release, and drop your thoughts in the comments to show your love!</p>
4705                        </div>
4706                    </div>
4707                </div>
4708            </div>
4709        </div>
4710<div id="bio-yuna-seo" class="bio-page">
4711            <div class="bio-header">
4712                <div class="container">
4713                    <a href="#artists" data-action="back" class="back-button lang-ko">← 아티스트로 돌아가기</a>
4714                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
4715                </div>
4716            </div>
4717            
4718            <div class="bio-content">
4719                <div class="bio-card">
4720                    <div class="bio-image-section">
4721                        <img src="https://media.echovira.com/byeolbit/byeolbit_yuna_seo_female_singer_portrait_0.png" alt="Yuna Seo" class="bio-artist-image"
4722                srcset="https://media.echovira.com/byeolbit/byeolbit_yuna_seo_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/byeolbit/byeolbit_yuna_seo_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/byeolbit/byeolbit_yuna_seo_female_singer_portrait_0-full.
4722webp 1024w"
4723                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
4724                    </div>
4725                    <div class="bio-text-section">
4726                        <div class="bio-artist-title">
4727                            <h1 class="lang-ko">서유나</h1>
4728                            <h1 class="lang-en">Yuna Seo</h1>
4729                            <div class="stage-name">"Yuna" • 24세 / Age 24</div>
4730                            <div class="role lang-ko">보컬</div>
4731                            <div class="role lang-en">Female Singer</div>
4732                        </div>
4733                        <div class="bio-description lang-ko">
4734                            <p>24세 보컬 윤아(서유나) — Byeolbit(별빛)의 소울풀하고 따뜻한 목소리를 소개합니다. 그녀의 달콤한 음색과 섬세한 감성은 팀의 서정적이고 다층적인 사운드에 중심을 더합니다. 무대를 채우는 에너지와 표현력으로 곧 발매될 신곡에서 더욱 빛날 그녀를 기대해 주세요 — 댓글로 응원과 듣고 싶은 스타일을 알려주세요!</p><p>소울풀함과 달콤함을 따뜻하고 친밀한 톤과 혼합하는 목소리. 별빛의 리드 보컬리스트로서 그녀는 밴드의 소닉 아이덴티티를 형성하여 희소한 편곡을 공명하고 감정적인 순간으로 바꾸고 라이브 다이나믹을 주도합니다. 무대에서 그녀의 프레이징과 통제된 다이나믹은 청취자를 끌어들이며 그녀의 음색과 상부 음역 명료함은 노래에 독특하고 인간적인 따뜻함을 제공합니다. 그녀는 소울과 인디 팝 영향을 화려한 런보다 정직한 스토리텔링을 선호하는 프레이징으로 혼합합니다.</p><p>별빛의 최신 싱글과 라이브 클립에서 이것을 들을 수 있습니다 — 그녀의 라인은 각 코러스가 착지하도록 멜로디와 미묘한 굴절을 균형잡습니다. 스트림, 팔로우, 그리고 댓글을 남겨 응원해 주세요 — 여러분의 지원은 그녀와 별빛이 더 밝게 빛나도록 도와줍니다!</p>
4735                        </div>
4736                        <div class="bio-description lang-en">
4737                            <p>Meet Yuna (Yuna Seo), 24 — the female singer of Byeolbit whose soulful, sweet voice and warm tone lift the band's lyrical, layered sound. Her expressive phrasing, steady power and stage energy add heart to every arrangement, and our upcoming releases will put her voice front and center.</p><p>Her voice blends soulfulness and sweetness with a warm, intimate tone. As Byeolbit's lead vocalist she shapes the band's sonic identity, turning sparse arrangements into resonant, emotional moments and driving live dynamics. On stage her phrasing and controlled dynamics draw listeners in, and her timbre and upper-range clarity give the songs a distinct, human warmth. She blends soul and indie-pop influences into phrasing that favors honest storytelling over flashy runs.</p><p>You can hear this in Byeolbit's latest single and live clips—her lines balance melody and subtle inflection to make each chorus land. Stream, follow, and leave a comment to tell us which vibe you want next — your support helps her and Byeolbit shine brighter!</p>
4738                        </div>
4739                    </div>
4740                </div>
4741            </div>
4742        </div>
4743</div>
4744<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
4745  <nav aria-label="Site pages">
4746    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
4747    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
4748    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
4749    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
4750  </nav>
4751  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
4752</footer>
4753`;e.s(["ByeolbitEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=(0,t.injectFluidCanvas)(a,"#3060ff","#0d1117",.28);function s(e){document.body.classList.remove("lang-ko","lang-en"),document.body.classList.add("lang-"+e),a.querySelectorAll("[data-lang]").forEach(e
4753=>e.classList.remove("active")),a.querySelector(`[data-lang="${e}"]`)?.classList.add("active")}function r(e){a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display="none"});let i=document.getElementById("bio-"+e);i&&(i.classList.add("active"),window.scrollTo(0,0))}function n(){a.querySelectorAll(".bio-page").forEach(e=>e.classList.remove("active")),a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display=""}),window.scrollTo(0,0)}function o(e){let a=e.target,i=a.closest("[data-artist-id]");if(i){e.preventDefault(),r(i.dataset.artistId);return}if(a.closest('[data-action="back"]')){e.preventDefault(),n();return}}window.setLanguage=s,s("ko"),a.querySelector('[data-lang="ko"]')?.addEventListener("click",()=>s("ko")),a.querySelector('[data-lang="en"]')?.addEventListener("click",()=>s("en")),window.showArtistBio=r,window.hideBioPage=n,window.showMainPage=n;let l=document.getElementById("mobileToggle"),c=document.getElementById("navMenu");l&&c&&l.addEventListener("click",()=>c.classList.toggle("active"));let d=()=>document.getElementById("mainNav")?.classList.toggle("scrolled",window.scrollY>100);return a.addEventListener("click",o),window.addEventListener("scroll",d),()=>{i(),a.removeEventListener("click",o),window.removeEventListener("scroll",d),delete window.setLanguage,delete window.showArtistBio,delete window.hideBioPage,delete window.showMainPage}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,className:"echovira-page-root",dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(n)},suppressHydrationWarning:!0}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},83313,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n=`
4754    <link rel="preconnect" href="https://fonts.googleapis.com">
4755    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
4756    <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;700;900&family=Playfair+Display:wght@400;700;900&display=swap" rel="stylesheet">
4757    <style>
4758        .entry-title, .post-edit-link, .site-footer, .site-info, .site-header, .site-branding, header.header, .masthead, .page-title {
4759            display: none !important;
4760        }
4761
4762        .vc_row[data-vc-full-width], .wpb_column, .vc_column_container, .wpb_wrapper, .entry-content, .site-content-contain, #content, .site-content, .site, #page, main {
4763            width: 100% !important;
4764            max-width: 100% !important;
4765            padding: 0 !important;
4766            margin: 0 !important;
4767            margin-top: 0 !important;
4768            padding-top: 0 !important;
4769        }
4770
4771        :root {
4772            --ev-bg: #fafafa;
4773            --ev-fg: #2c2c2c;
4774            --primary-color: #1a1a1a;
4775            --cortica-red: #C41E3A;
4776            --cortica-green: #006847;
4777            --cortica-gold: #FFD700;
4778            --white: #ffffff;
4779            --light-gray: #f5f5f5;
4780            --text-light: #ffffff;
4781            --text-dark: #2c2c2c;
4782            --background-dark: #0a0a0a;
4783            --background-light: #fafafa;
4784            --gradient-main: linear-gradient(135deg, #C41E3A 0%, #006847 100%);
4785            --shadow-light: 0 2px 20px rgba(0,0,0,0.1);
4786            --shadow-heavy: 0 10px 40px rgba(0,0,0,0.2);
4787            --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
4788        }
4789
4790        * {
4791            margin: 0;
4792            padding: 0;
4793            box-sizing: border-box;
4794        }
4795
4796        body {
4797            font-family: 'Montserrat', -apple-system, sans-serif;
4798            line-height: 1.8;
4799            color: var(--ev-fg);
4800            background: var(--ev-bg);
4801            overflow-x: hidden;
4802            margin: 0 !important;
4803            padding: 0 !important;
4804        }
4805
4806        body:not(.lang-pt) .lang-pt { display: none !important; }
4807        body:not(.lang-en) .lang-en { display: none !important; }
4808
4809        /* Flex child of .nav-container (moved there from being a sibling of
4810           it), not absolutely positioned over the nav bar: that positioned
4811           it relative to .main-nav regardless of .nav-container's own flex
4812           layout, landing on top of the hamburger icon on mobile despite
4813           the nav-container padding-right band-aid below (which shifted
4814           the hamburger left but never actually clipped this element,
4815           since it isn't a descendant of the padded box). */
4816        .lang-toggle {
4817            display: flex;
4818            flex-shrink: 0;
4819            background: rgba(255,255,255,0.2);
4820            border-radius: 25px;
4821            padding: 8px;
4822            backdrop-filter: blur(10px);
4823        }
4824
4825        .lang-toggle button {
4826            background: transparent;
4827            border: none;
4828            padding: 8px 16px;
4829            cursor: pointer;
4830            font-weight: 700;
4831            border-radius: 20px;
4832            transition: var(--transition);
4833            font-size: 0.9rem;
4834            color: white;
4835        }
4836
4837        .lang-toggle button.active {
4838            background: var(--cortica-red);
4839            color: white;
4840        }
4841
4842        .main-nav {
4843            position: fixed;
4844            top: 0;
4845            left: 0;
4846            right: 0;
4847            background: rgba(10, 10, 10, 0.95);
4848            backdrop-filter: blur(20px);
4849            z-index: 1000;
4850            padding: 1rem 0;
4851            border-bottom: 1px solid rgba(196, 30, 58, 0.3);
4852        }
4853
4854        .nav-container {
4855            max-width: 1200px;
4856            margin: 0 auto;
4857            padding: 0 20px;
4858            padding-right: 210px;
4859            display: flex;
4860            justify-content: space-between;
4861            align-items: center;
4862        }
4863
4864        .logo img { height: 50px; }
4865
4866        .nav-menu {
4867            display: flex;
4868            list-style: none;
4869            gap: 2rem;
4870        }
4871
4872        .nav-menu a {
4873            color: var(--text-light);
4874            text-decoration: none;
4875            font-weight: 700;
4876            transition: var(--transition);
4877        }
4878
4879        /* --cortica-red (#C41E3A) on the dark nav bg is ~3.10:1, below AA's
4880           4.5:1 -- lightened for this specific dark-bg hover context
4881           (--cortica-red itself is fine as used elsewhere, e.g. on white). */
4882        .nav-menu a:hover { color: #d66275; }
4883
4884        .mobile-menu-toggle {
4885            display: none;
4886            background: none;
4887            border: none;
4888            color: var(--text-light);
4889            font-size: 1.5rem;
4890            cursor: pointer;
4891        }
4892
4893        .hero-section {
4894            min-height: 100vh;
4895            /* Worst-case gradient stop (#C41E3A red) already gives white
4896               text ~5.7:1 -- no scrim needed, just a solid stand-in so the
4897               ADA crawler can see it (it only reads background-color, not
4898               gradients, and falls through to a near-white default
4899               otherwise). */
4900            --ada-contrast-bg: #c41e3a;
4901            background: var(--gradient-main);
4902            display: flex;
4903            align-items: center;
4904            justify-content: center;
4905            text-align: center;
4906            color: var(--text-light);
4907            position: relative;
4908            overflow: hidden;
4909        }
4910
4911        .hero-section::before {
4912            content: '';
4913            position: absolute;
4914            top: 0;
4915            left: 0;
4916            right: 0;
4917            bottom: 0;
4918            background: radial-gradient(circle at 50% 0%, rgba(255,255,255,0.1) 0%, transparent 50%);
4919        }
4920
4921        .hero-content {
4922            position: relative;
4923            z-index: 2;
4924            max-width: 900px;
4925            padding: 0 20px;
4926        }
4927
4928        .hero-title {
4929            font-family: 'Playfair Display', serif;
4930            font-size: clamp(3rem, 8vw, 6rem);
4931            margin-bottom: 1rem;
4932            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
4933            font-weight: 900;
4934        }
4935
4936        .hero-subtitle {
4937            font-size: clamp(1rem, 2vw, 1.3rem);
4938            margin-bottom: 2rem;
4939            opacity: 0.9;
4940            line-height: 1.6;
4941        }
4942
4943        .cta-button {
4944            display: inline-block;
4945            padding: 18px 40px;
4946            background: white;
4947            color: var(--cortica-red);
4948            text-decoration: none;
4949            border-radius: 50px;
4950            font-weight: 700;
4951            font-size: 1.1rem;
4952            transition: var(--transition);
4953            box-shadow: var(--shadow-light);
4954        }
4955
4956        .cta-button:hover {
4957            transform: translateY(-3px);
4958            box-shadow: var(--shadow-heavy);
4959            background: var(--cortica-green);
4960            color: white;
4961        }
4962
4963        .section {
4964            padding: 80px 0;
4965        }
4966
4967        .section-dark {
4968            background: var(--background-dark);
4969            color: var(--text-light);
4970        }
4971
4972        .container {
4973            max-width: 1200px;
4974            margin: 0 auto;
4975            padding: 0 20px;
4976        }
4977
4978        .section-title {
4979            text-align: center;
4980            font-size: 2.5rem;
4981            margin-bottom: 3rem;
4982            position: relative;
4983            font-family: 'Playfair Display', serif;
4984            font-weight: 900;
4985        }
4986
4987        .section-title::after {
4988            content: '';
4989            position: absolute;
4990            bottom: -10px;
4991            left: 50%;
4992            transform: translateX(-50%);
4993            width: 80px;
4994            height: 3px;
4995            background: var(--cortica-red);
4996            border-radius: 2px;
4997        }
4998
4999        .about-content {
5000            max-width: 900px;
5001            margin: 0 auto;
5002            text-align: center;
5003            line-height: 2;
5004            font-size: 1.1rem;
5005        }
5006
5007        .about-content p {
5008            margin-bottom: 1.5rem;
5009        }
5010
5011        .artists-gallery {
5012            display: grid;
5013            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
5014            gap: 2.5rem;
5015            margin-top: 3rem;
5016        }
5017
5018        .artist-card {
5019            position: relative;
5020            cursor: pointer;
5021            transition: var(--transition);
5022            background: white;
5023            border-radius: 20px;
5024            overflow: hidden;
5025            box-shadow: var(--shadow-light);
5026            border: 2px solid transparent;
5027        }
5028
5029        .artist-card:hover {
5030            transform: translateY(-10px) scale(1.02);
5031            box-shadow: var(--shadow-heavy);
5032            border-color: var(--cortica-green);
5033        }
5034
5035        .artist-image-wrapper {
5036            position: relative;
5037            width: 100%;
5038            aspect-ratio: 1;
5039            overflow: hidden;
5040        }
5041
5042        .artist-image {
5043            width: 100%;
5044            height: 100%;
5045            object-fit: cover;
5046            transition: transform 0.5s ease;
5047        }
5048
5049        .artist-card:hover .artist-image {
5050            transform: scale(1.1);
5051        }
5052
5053        .artist-overlay {
5054            position: absolute;
5055            bottom: 0;
5056            left: 0;
5057            right: 0;
5058            background: linear-gradient(to top, rgba(0,0,0,0.9), transparent);
5059            padding: 2rem 1.5rem 1.5rem;
5060            color: white;
5061        }
5062
5063        .artist-stage-name {
5064            font-size: 1.5rem;
5065            font-weight: 900;
5066            margin-bottom: 0.3rem;
5067        }
5068
5069        .artist-role-badge {
5070            display: inline-block;
5071            background: var(--cortica-red);
5072            padding: 4px 12px;
5073            border-radius: 15px;
5074            font-size: 0.75rem;
5075            font-weight: 700;
5076            text-transform: uppercase;
5077            letter-spacing: 0.5px;
5078        }
5079
5080        .artist-real-name {
5081            font-size: 0.9rem;
5082            opacity: 0.8;
5083            margin-top: 0.5rem;
5084        }
5085
5086        .releases-grid, .videos-grid, .news-grid {
5087            display: grid;
5088            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
5089            gap: 2rem;
5090            margin-top: 3rem;
5091        }
5092
5093        .release-card, .video-card, .news-card {
5094            background: white;
5095            border-radius: 20px;
5096            overflow: hidden;
5097            box-shadow: var(--shadow-light);
5098            transition: var(--transition);
5099            border: 2px solid transparent;
5100        }
5101
5102        .section-dark .release-card,
5103        .section-dark .video-card,
5104        .section-dark .news-card {
5105            background: rgba(255,255,255,0.05);
5106            border-color: rgba(255,255,255,0.1);
5107        }
5108
5109        .release-card:hover, .video-card:hover, .news-card:hover {
5110            transform: translateY(-10px);
5111            box-shadow: var(--shadow-heavy);
5112            border-color: var(--cortica-green);
5113        }
5114
5115        .release-image, .video-embed, .news-image {
5116            position: relative;
5117            overflow: hidden;
5118            background: var(--gradient-main);
5119            display: flex;
5120            align-items: center;
5121            justify-content: center;
5122            color: white;
5123            font-size: 4rem;
5124        }
5125
5126        .release-image { 
5127            aspect-ratio: 1;
5128            position: relative;
5129        }
5130        
5131        .release-image img,
5132        .news-image img {
5133            width: 100%;
5134            height: 100%;
5135            object-fit: cover;
5136        }
5137
5138        .video-embed { 
5139            padding-bottom: 56.25%; 
5140            height: 0;
5141            position: relative;
5142        }
5143
5144        .video-embed iframe {
5145            position: absolute;
5146            top: 0;
5147            left: 0;
5148            width: 100%;
5149            height: 100%;
5150        }
5151
5152        .news-image { height: 200px; }
5153
5154        .release-info, .video-info, .news-content {
5155            padding: 1.5rem;
5156        }
5157
5158        .section-dark .release-info,
5159        .section-dark .video-info,
5160        .section-dark .news-content {
5161            color: var(--text-light);
5162        }
5163
5164        .release-title, .video-title, .news-title {
5165            font-size: 1.3rem;
5166            margin-bottom: 0.5rem;
5167            font-weight: 700;
5168            color: var(--text-dark);
5169        }
5170
5171        .section-dark .release-title,
5172        .section-dark .video-title,
5173        .section-dark .news-title {
5174            color: var(--text-light);
5175        }
5176
5177        .release-description, .news-excerpt {
5178            font-size: 0.95rem;
5179            color: #666;
5180            margin-bottom: 1rem;
5181            line-height: 1.6;
5182        }
5183
5184        .section-dark .release-description,
5185        .section-dark .news-excerpt {
5186            color: rgba(255,255,255,0.8);
5187        }
5188
5189        .streaming-links {
5190            display: flex;
5191            gap: 0.5rem;
5192            flex-wrap: wrap;
5193        }
5194
5195        .streaming-link {
5196            padding: 8px 15px;
5197            background: var(--cortica-green);
5198            color: white;
5199            text-decoration: none;
5200            border-radius: 20px;
5201            font-size: 0.8rem;
5202            font-weight: 700;
5203            transition: var(--transition);
5204            display: inline-block;
5205        }
5206
5207        .streaming-link:hover {
5208            background: var(--cortica-red);
5209            transform: translateY(-2px);
5210        }
5211
5212        .video-link, .read-more {
5213            display: inline-block;
5214            margin-top: 1rem;
5215            color: var(--cortica-red);
5216            text-decoration: none;
5217            font-weight: 700;
5218            transition: var(--transition);
5219        }
5220
5221        .section-dark .video-link,
5222        .section-dark .read-more {
5223            /* --cortica-green (#006847) on the ~5%-white-tinted dark card
5224               is ~2.73:1, below AA's 4.5:1 -- lightened for this
5225               dark-on-dark context (--cortica-green itself is fine as
5226               used elsewhere, e.g. the hover state on a white card). */
5227            color: #599d87;
5228        }
5229
5230        .video-link:hover, .read-more:hover {
5231            color: var(--cortica-green);
5232        }
5233
5234        .view-all-btn {
5235            text-align: center;
5236            margin-top: 3rem;
5237        }
5238
5239        .view-all-btn a {
5240            display: inline-block;
5241            padding: 15px 35px;
5242            background: var(--cortica-red);
5243            color: white;
5244            text-decoration: none;
5245            border-radius: 30px;
5246            font-weight: 700;
5247            transition: var(--transition);
5248        }
5249
5250        .view-all-btn a:hove
5250r {
5251            background: var(--cortica-green);
5252            transform: translateY(-3px);
5253        }
5254
5255        .loading-message {
5256            grid-column: 1 / -1;
5257            text-align: center;
5258            padding: 3rem;
5259            font-size: 1.2rem;
5260            color: #999;
5261        }
5262
5263        .bio-page {
5264            display: none;
5265            min-height: 100vh;
5266            padding-top: 80px;
5267            background: var(--background-light);
5268        }
5269
5270        .bio-page.active {
5271            display: block;
5272        }
5273
5274        .bio-header {
5275            background: var(--gradient-main);
5276            padding: 3rem 0;
5277            color: white;
5278            text-align: center;
5279        }
5280
5281        .back-button {
5282            display: inline-block;
5283            padding: 10px 25px;
5284            background: rgba(255,255,255,0.2);
5285            color: white;
5286            text-decoration: none;
5287            border-radius: 25px;
5288            margin-bottom: 1rem;
5289            transition: var(--transition);
5290            font-weight: 700;
5291        }
5292
5293        .back-button:hover {
5294            background: rgba(255,255,255,0.3);
5295            transform: translateY(-2px);
5296        }
5297
5298        .bio-content {
5299            max-width: 1000px;
5300            margin: -50px auto 0;
5301            position: relative;
5302            z-index: 10;
5303            padding: 0 20px 60px;
5304        }
5305
5306        .bio-card {
5307            background: white;
5308            border-radius: 20px;
5309            overflow: hidden;
5310            box-shadow: var(--shadow-heavy);
5311        }
5312
5313        .bio-image-section {
5314            padding: 3rem;
5315            text-align: center;
5316            background: linear-gradient(135deg, #fff5f5 0%, #e6ffe6 100%);
5317        }
5318
5319        .bio-artist-image {
5320            width: 280px;
5321            height: 280px;
5322            border-radius: 50%;
5323            object-fit: cover;
5324            border: 6px solid white;
5325            box-shadow: var(--shadow-light);
5326        }
5327
5328        .bio-text-section {
5329            padding: 3rem;
5330        }
5331
5332        .bio-artist-title {
5333            text-align: center;
5334            margin-bottom: 2.5rem;
5335            padding-bottom: 2rem;
5336            border-bottom: 2px solid #f0f0f0;
5337        }
5338
5339        .bio-artist-title h1 {
5340            font-size: 2.8rem;
5341            margin-bottom: 0.8rem;
5342            font-family: 'Playfair Display', serif;
5343            color: var(--text-dark);
5344            font-weight: 900;
5345        }
5346
5347        .bio-artist-title .stage-name {
5348            font-size: 1.4rem;
5349            color: var(--cortica-red);
5350            font-weight: 700;
5351            margin-bottom: 1rem;
5352        }
5353
5354        .bio-artist-title .role {
5355            display: inline-block;
5356            background: var(--cortica-green);
5357            color: white;
5358            padding: 10px 25px;
5359            border-radius: 25px;
5360            font-size: 1rem;
5361            font-weight: 700;
5362        }
5363
5364        .bio-description {
5365            line-height: 2;
5366            font-size: 1.1rem;
5367            color: var(--text-dark);
5368        }
5369
5370        .bio-description p {
5371            margin-bottom: 1.5rem;
5372            text-align: justify;
5373        }
5374
5375        .main-footer {
5376            background: var(--primary-color);
5377            color: var(--text-light);
5378            padding: 3rem 0 1rem;
5379            text-align: center;
5380        }
5381
5382        .social-links {
5383            display: flex;
5384            justify-content: center;
5385            gap: 1rem;
5386            margin-bottom: 2rem;
5387        }
5388
5389        .social-link {
5390            width: 50px;
5391            height: 50px;
5392            border-radius: 50%;
5393            background: var(--cortica-red);
5394            color: var(--text-light);
5395            display: flex;
5396            align-items: center;
5397            justify-content: center;
5398            text-decoration: none;
5399            font-size: 1.2rem;
5400            transition: var(--transition);
5401        }
5402
5403        .social-link:hover {
5404            background: var(--cortica-green);
5405            transform: translateY(-3px);
5406        }
5407
5408        @media (max-width: 768px) {
5409            .mobile-menu-toggle { display: block; }
5410            .lang-toggle { padding: 5px; }
5411            .lang-toggle button { padding: 6px 10px; font-size: 0.75rem; }
5412            .nav-menu {
5413                position: fixed;
5414                top: 70px;
5415                left: 0;
5416                right: 0;
5417                background: var(--primary-color);
5418                flex-direction: column;
5419                padding: 2rem;
5420                transform: translateY(-100%);
5421                opacity: 0;
5422                visibility: hidden;
5423                transition: var(--transition);
5424            }
5425            .nav-menu.active {
5426                transform: translateY(0);
5427                opacity: 1;
5428                visibility: visible;
5429            }
5430            .artists-gallery {
5431                grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
5432                gap: 1.5rem;
5433            }
5434            .releases-grid, .videos-grid, .news-grid {
5435                grid-template-columns: 1fr;
5436            }
5437            .bio-artist-image {
5438                width: 200px;
5439                height: 200px;
5440            }
5441            .bio-artist-title h1 {
5442                font-size: 2rem;
5443            }
5444            .bio-text-section {
5445                padding: 2rem 1.5rem;
5446            }
5447        }
5448    
5449    .ev-nw-badge{position:fixed;bottom:72px;right:20px;z-index:9999;display:inline-flex;align-items:center;gap:5px;padding:8px 14px;background:rgba(2,2,8,.9);border:1px solid rgba(255,255,255,.14);border-radius:100px;font-size:.68rem;font-weight:600;color:rgba(255,255,255,.55);text-decoration:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);letter-spacing:.06em;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}
5450.ev-nw-badge:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(2,2,8,.97)}
5451.ev-nw-badge-mark{width:14px;
5451height:14px;display:grid;grid-template-columns:1fr 1fr;gap:2px;flex-shrink:0}
5452.ev-nw-badge-mark span{background:currentColor;border-radius:2px;display:block}
5453  </style>
5454
5455<a href="https://echovira.com" class="ev-nw-badge" target="_blank" rel="noopener" title="EchoVira Music Network">
5456  <div class="ev-nw-badge-mark"><span></span><span></span><span></span><span></span></div>
5457  EchoVira
5458</a>
5459
5460<nav class="main-nav" id="mainNav">
5461    <div class="nav-container">
5462        <a href="#home" class="logo">
5463            <img src="https://media.echovira.com/echovira/cortica_logo.png" alt="Corti\xe7a Cortica"
5464                srcset="https://media.echovira.com/echovira/cortica_logo-400.webp 400w, https://media.echovira.com/echovira/cortica_logo-800.webp 800w, https://media.echovira.com/echovira/cortica_logo-full.webp 1024w"
5465                sizes="50px" width="1024" height="1536" decoding="async">
5466        </a>
5467        <ul class="nav-menu" id="navMenu">
5468            <li class="lang-pt"><a href="#home">In\xedcio</a></li>
5469            <li class="lang-pt"><a href="#about">Sobre</a></li>
5470            <li class="lang-pt"><a href="#artists">Artistas</a></li>
5471            <li class="lang-pt"><a href="#releases">Lan\xe7amentos</a></li>
5472            <li class="lang-pt"><a href="#videos">V\xeddeos</a></li>
5473            <li class="lang-pt"><a href="#news">Not\xedcias</a></li>
5474            <li class="lang-en"><a href="#home">Home</a></li>
5475            <li class="lang-en"><a href="#about">About</a></li>
5476            <li class="lang-en"><a href="#artists">Artists</a></li>
5477            <li class="lang-en"><a href="#releases">Releases</a></li>
5478            <li class="lang-en"><a href="#videos">Videos</a></li>
5479            <li class="lang-en"><a href="#news">News</a></li>
5480        </ul>
5481        <div class="lang-toggle">
5482            <button onclick="window.setLanguage&&setLanguage('pt')" class="lang-btn-pt active" data-lang="pt">Portugu\xeas</button>
5483            <button onclick="window.setLanguage&&setLanguage('en')" class="lang-btn-en" data-lang="en">English</button>
5484        </div>
5485        <button class="mobile-menu-toggle" id="mobileToggle">☰</button>
5486    </div>
5487</nav>
5488
5489<span id="main-content" tabindex="-1"></span>
5490
5491<section class="hero-section" id="home">
5492    
5493    
5494    <div class="hero-content">
5495        <h1 class="hero-title">Corti\xe7a Cortica</h1>
5496        <p class="hero-subtitle lang-pt">Banda Portuguesa | Fus\xe3o de Pop, Fado e Eletr\xf3nica | 12 Artistas Talentosos | Produ\xe7\xe3o Internacional</p>
5497        <p class="hero-subtitle lang-en">Portuguese Band | Pop, Fado & Electronic Fusion | 12 Talented Artists | International Production</p>
5498        <a href="#about" class="cta-button lang-pt">Descubra Nossa M\xfasica</a>
5499        <a href="#about" class="cta-button lang-en">Discover Our Music</a>
5500    </div>
5501</section>
5502
5503<section class="section" id="about">
5504    <div class="container">
5505        <h2 class="section-title lang-pt">Sobre Corti\xe7a</h2>
5506        <h2 class="section-title lang-en">About Cortica</h2>
5507        <div class="about-content">
5508            <p class="lang-pt">
5509                <strong>Corti\xe7a (Cortica)</strong> — mais do que uma banda, Corti\xe7a representa uma nova onda da <strong>m\xfasica portuguesa contempor\xe2nea</strong>. Fundimos perfeitamente <strong>melodias pop</strong> e <strong>elementos tradicionais do fado</strong> com <strong>indie rock</strong> moderno, <strong>m\xfasica eletr\xf3nica</strong> e <strong>experimenta\xe7\xe3o sonora</strong> para criar um som \xfanico que transcende fronteiras culturais e toca cora\xe7\xf5es.
5510            </p>
5511            <p class="lang-pt">
5512                Formada por 12 m\xfasicos talentosos — <strong>vocalistas</strong>, <strong>multi-instrumentistas</strong>, <strong>compositores e letristas</strong> — Corti\xe7a representa a diversidade e criatividade da <strong>m\xfasica portuguesa</strong> contempor\xe2nea. Inspiramo-nos em <strong>pop</strong>, <strong>fado</strong>, <strong>jazz</strong>, <strong>soul</strong>, <strong>indie rock</strong> e <strong>m\xfasica eletr\xf3nica</strong> para produzir obras com <strong>qualidade mundial</strong> e <strong>identidade portuguesa aut\xeantica</strong>.
5513            </p>
5514            <p class="lang-pt">
5515                Das <strong>apresenta\xe7\xf5es ao vivo</strong> e <strong>festivais de m\xfasica</strong> em Lisboa e por todo Portugal ao lan\xe7amento de <strong>\xe1lbuns digitais</strong> e <strong>singles</strong> em todas as plataformas de streaming (Spotify, Apple Music, YouTube Music), Corti\xe7a est\xe1 construindo um legado musical que honra o rico patrim\xf4nio musical de Portugal enquanto abra\xe7a a inova\xe7\xe3o global. Corti\xe7a significa corti\xe7a — natural, aut\xeantica, cheia de calor e hist\xf3ria.
5516            </p>
5517            
5518            <p class="lang-en">
5519                <strong>Corti\xe7a (Cortica)</strong> — more than just a band, Cortica represents a new wave of <strong>contemporary Portuguese music</strong>. We perfectly blend <strong>pop melodies</strong> and <strong>traditional fado elements</strong> with modern <strong>indie rock</strong>, <strong>electronic music</strong>, and <strong>sonic experimentation</strong> to create a unique sound that transcends cultural boundaries and touches hearts.
5520            </p>
5521            <p class="lang-en">
5522                Formed by 12 talented musicians — <strong>vocalists</strong>, <strong>multi-instrumentalists</strong>, <strong>composers and lyricists</strong> — Cortica represents the diversity and creativity of contemporary <strong>Portuguese music</strong>. We draw inspiration from <strong>pop</strong>, <strong>fado</strong>, <strong>jazz</strong>, <strong>soul</strong>, <strong>indie rock</strong>, and <strong>electronic music</strong> to produce works with <strong>world-class quality</strong> and <strong>authentic Portuguese identity</strong>.
5523            </p>
5524            <p class="lang-en">
5525                From <strong>live performances</strong> and <strong>music festivals</strong> in Lisbon and across Portugal to releasing <strong>digital albums</strong> and <strong>singles</strong> on all streaming platforms (Spotify, Apple Music, YouTube Music), Cortica is building a musical legacy that honors Portugal's rich musical heritage while embracing global innovation. Corti\xe7a means cork — natural, authentic, filled with warmth and history.
5526            </p>
5527        </div>
5528    </div>
5529</section>
5530
5531<section class="section section-dark" id="artists">
5532    <div class="container">
5533        <h2 class="section-title lang-pt">Os Artistas</h2>
5534        <h2 class="section-title lang-en">The Artists</h2>
5535        <div class="artists-gallery" id="artistsGallery">
5536<div class="artist-card" data-artist-id="andre-figueira" style="cursor:pointer">
5537            <div class="artist-image-wrapper">
5538                <img src="https://media.echovira.com/cortica/cortiya_andre_figueira_male_singer_portrait_0.png" alt="Andre Figueira" class="artist-image"
5539                srcset="https://media.echovira.com/cortica/cortiya_andre_figueira_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/cortica/cortiya_andre_figueira_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/cortica/cortiya_andre_figueira_male_singer_portrait_0-full.
5539webp 1024w"
5540                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
5541                <div class="artist-overlay">
5542                    <div class="artist-stage-name">Andre</div>
5543                    <div class="artist-role-badge lang-pt">Cantor</div>
5544                    <div class="artist-role-badge lang-en">Male Singer</div>
5545                    <div class="artist-real-name">Andre Figueira • 26 anos / years</div>
5546                </div>
5547            </div>
5548        </div><div class="artist-card" data-artist-id="beatriz-santos" style="cursor:pointer">
5549            <div class="artist-image-wrapper">
5550                <img src="https://media.echovira.com/cortica/cortiya_beatriz_santos_female_singer_portrait_1.png" alt="Beatriz Santos" class="artist-image"
5551                srcset="https://media.echovira.com/cortica/cortiya_beatriz_santos_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/cortica/cortiya_beatriz_santos_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/cortica/cortiya_beatriz_santos_female_singer_portrait_1-full.webp 1024w"
5552                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
5553                <div class="artist-overlay">
5554                    <div class="artist-stage-name">Bea</div>
5555                    <div class="artist-role-badge lang-pt">Cantora</div>
5556                    <div class="artist-role-badge lang-en">Female Singer</div>
5557                    <div class="artist-real-name">Beatriz Santos • 25 anos / years</div>
5558                </div>
5559            </div>
5560        </div><div class="artist-card" data-artist-id="catarina-lopes" style="cursor:pointer">
5561            <div class="artist-image-wrapper">
5562                <img src="https://media.echovira.com/cortica/cortiya_catarina_lopes_female_singer_portrait_1.png" alt="Catarina Lopes" class="artist-image"
5563                srcset="https://media.echovira.com/cortica/cortiya_catarina_lopes_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/cortica/cortiya_catarina_lopes_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/cortica/cortiya_catarina_lopes_female_singer_portrait_1-full.webp 1024w"
5564                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
5565                <div class="artist-overlay">
5566                    <div class="artist-stage-name">Catarina</div>
5567                    <div class="artist-role-badge lang-pt">Cantora</div>
5568                    <div class="artist-role-badge lang-en">Female Singer</div>
5569                    <div class="artist-real-name">Catarina Lopes • 27 anos / years</div>
5570                </div>
5571            </div>
5572        </div><div class="artist-card" data-artist-id="clara-ribeiro" style="cursor:pointer">
5573            <div class="artist-image-wrapper">
5574                <img src="https://media.echovira.com/cortica/cortiya_clara_ribeiro_composer_lyricist_portrait_1.png" alt="Clara Ribeiro" class="artist-image"
5575                srcset="https://media.echovira.com/cortica/cortiya_clara_ribeiro_composer_lyricist_portrait_1-400.webp 400w, https://media.echovira.com/cortica/cortiya_clara_ribeiro_composer_lyricist_portrait_1-800.webp 800w, https://media.echovira.com/cortica/cortiya_clara_ribeiro_composer_lyricist_portrait_1-full.webp 1024w"
5576                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
5577                <div class="artist-overlay">
5578                    <div class="artist-stage-name">Clara</div>
5579                    <div class="artist-role-badge lang-pt">Compositora & Letrista</div>
5580                    <div class="artist-role-badge lang-en">Composer & Lyricist</div>
5581                    <div class="artist-real-name">Clara Ribeiro • 26 anos / years</div>
5582                </div>
5583            </div>
5584        </div><div class="artist-card" data-artist-id="helena-martins" style="cursor:pointer">
5585            <div class="artist-image-wrapper">
5586                <img src="https://media.echovira.com/cortica/cortiya_helena_martins_multi_instrumentalist_portrait_0.png" alt="Helena Martins" class="artist-image"
5587                srcset="https://media.echovira.com/cortica/cortiya_helena_martins_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/cortica/cortiya_helena_martins_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/cortica/cortiya_helena_martins_multi_instrumentalist_portrait_0-full.
5587webp 1024w"
5588                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
5589                <div class="artist-overlay">
5590                    <div class="artist-stage-name">Helena</div>
5591                    <div class="artist-role-badge lang-pt">Multi-instrumentista</div>
5592                    <div class="artist-role-badge lang-en">Multi-Instrumentalist</div>
5593                    <div class="artist-real-name">Helena Martins • 25 anos / years</div>
5594                </div>
5595            </div>
5596        </div><div class="artist-card" data-artist-id="ines-oliveira" style="cursor:pointer">
5597            <div class="artist-image-wrapper">
5598                <img src="https://media.echovira.com/cortica/cortiya_ines_oliveira_female_singer_portrait_0.png" alt="Ines Oliveira" class="artist-image"
5599                srcset="https://media.echovira.com/cortica/cortiya_ines_oliveira_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/cortica/cortiya_ines_oliveira_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/cortica/cortiya_ines_oliveira_female_singer_portrait_0-full.webp 1024w"
5600                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
5601                <div class="artist-overlay">
5602                    <div class="artist-stage-name">Ines</div>
5603                    <div class="artist-role-badge lang-pt">Cantora</div>
5604                    <div class="artist-role-badge lang-en">Female Singer</div>
5605                    <div class="artist-real-name">Ines Oliveira • 23 anos / years</div>
5606                </div>
5607            </div>
5608        </div><div class="artist-card" data-artist-id="joao-marques" style="cursor:pointer">
5609            <div class="artist-image-wrapper">
5610                <img src="https://media.echovira.com/cortica/cortiya_joao_marques_male_singer_portrait_0.png" alt="Joao Marques" class="artist-image"
5611                srcset="https://media.echovira.com/cortica/cortiya_joao_marques_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/cortica/cortiya_joao_marques_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/cortica/cortiya_joao_marques_male_singer_portrait_0-full.webp 1024w"
5612                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
5613                <div class="artist-overlay">
5614                    <div class="artist-stage-name">Joao</div>
5615                    <div class="artist-role-badge lang-pt">Cantor</div>
5616                    <div class="artist-role-badge lang-en">Male Singer</div>
5617                    <div class="artist-real-name">Joao Marques • 27 anos / years</div>
5618                </div>
5619            </div>
5620        </div><div class="artist-card" data-artist-id="mariana-costa" style="cursor:pointer">
5621            <div class="artist-image-wrapper">
5622                <img src="https://media.echovira.com/cortica/cortiya_mariana_costa_female_singer_portrait_1.png" alt="Mariana Costa" class="artist-image"
5623                srcset="https://media.echovira.com/cortica/cortiya_mariana_costa_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/cortica/cortiya_mariana_costa_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/cortica/cortiya_mariana_costa_female_singer_portrait_1-full.webp 1024w"
5624                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
5625                <div class="artist-overlay">
5626                    <div class="artist-stage-name">Mariana</div>
5627                    <div class="artist-role-badge lang-pt">Cantora</div>
5628                    <div class="artist-role-badge lang-en">Female Singer</div>
5629                    <div class="artist-real-name">Mariana Costa • 26 anos / years</div>
5630                </div>
5631            </div>
5632        </div><div class="artist-card" data-artist-id="miguel-carvalho" style="cursor:pointer">
5633            <div class="artist-image-wrapper">
5634                <img src="https://media.echovira.com/cortica/cortiya_miguel_carvalho_male_singer_portrait_0.png" alt="Miguel Carvalho" class="artist-image"
5635                srcset="https://media.echovira.com/cortica/cortiya_miguel_carvalho_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/cortica/cortiya_miguel_carvalho_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/cortica/cortiya_miguel_carvalho_male_singer_portrait_0-full.
5635webp 1024w"
5636                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
5637                <div class="artist-overlay">
5638                    <div class="artist-stage-name">Miguel</div>
5639                    <div class="artist-role-badge lang-pt">Cantor</div>
5640                    <div class="artist-role-badge lang-en">Male Singer</div>
5641                    <div class="artist-real-name">Miguel Carvalho • 25 anos / years</div>
5642                </div>
5643            </div>
5644        </div><div class="artist-card" data-artist-id="pedro-almeida" style="cursor:pointer">
5645            <div class="artist-image-wrapper">
5646                <img src="https://media.echovira.com/cortica/cortiya_pedro_almeida_male_singer_portrait_1.png" alt="Pedro Almeida" class="artist-image"
5647                srcset="https://media.echovira.com/cortica/cortiya_pedro_almeida_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/cortica/cortiya_pedro_almeida_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/cortica/cortiya_pedro_almeida_male_singer_portrait_1-full.webp 1024w"
5648                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
5649                <div class="artist-overlay">
5650                    <div class="artist-stage-name">Pedro</div>
5651                    <div class="artist-role-badge lang-pt">Cantor</div>
5652                    <div class="artist-role-badge lang-en">Male Singer</div>
5653                    <div class="artist-real-name">Pedro Almeida • 24 anos / years</div>
5654                </div>
5655            </div>
5656        </div><div class="artist-card" data-artist-id="sofia-matos" style="cursor:pointer">
5657            <div class="artist-image-wrapper">
5658                <img src="https://media.echovira.com/cortica/cortiya_sofia_matos_female_singer_portrait_1.png" alt="Sofia Matos" class="artist-image"
5659                srcset="https://media.echovira.com/cortica/cortiya_sofia_matos_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/cortica/cortiya_sofia_matos_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/cortica/cortiya_sofia_matos_female_singer_portrait_1-full.webp 1024w"
5660                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
5661                <div class="artist-overlay">
5662                    <div class="artist-stage-name">Sofia</div>
5663                    <div class="artist-role-badge lang-pt">Cantora</div>
5664                    <div class="artist-role-badge lang-en">Female Singer</div>
5665                    <div class="artist-real-name">Sofia Matos • 24 anos / years</div>
5666                </div>
5667            </div>
5668        </div><div class="artist-card" data-artist-id="tiago-sousa" style="cursor:pointer">
5669            <div class="artist-image-wrapper">
5670                <img src="https://media.echovira.com/cortica/cortiya_tiago_sousa_male_singer_portrait_0.png" alt="Tiago Sousa" class="artist-image"
5671                srcset="https://media.echovira.com/cortica/cortiya_tiago_sousa_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/cortica/cortiya_tiago_sousa_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/cortica/cortiya_tiago_sousa_male_singer_portrait_0-full.webp 1024w"
5672                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
5673                <div class="artist-overlay">
5674                    <div class="artist-stage-name">Tiago</div>
5675                    <div class="artist-role-badge lang-pt">Cantor</div>
5676                    <div class="artist-role-badge lang-en">Male Singer</div>
5677                    <div class="artist-real-name">Tiago Sousa • 23 anos / years</div>
5678                </div>
5679            </div>
5680        </div>
5681</div>
5682    </div>
5683</section>
5684
5685<section class="section" id="releases">
5686    <div class="container">
5687        <h2 class="section-title lang-pt">\xdaltimos Lan\xe7amentos</h2>
5688        <h2 class="section-title lang-en">Latest Releases</h2>
5689        <div class="releases-grid" id="releasesGrid">
5690        <div class="release-card">
5691            <div class="release-image">🎵</div>
5692            <div class="release-info">
5693                <h3 class="release-title lang-pt">Corti\xe7a - Primeiro Single</h3>
5694                <h3 class="release-title lang-en">Cortica - First Single</h3>
5695                <p class="release-description lang-pt">Ou\xe7a a m\xfasica de Corti\xe7a nas redes sociais</p>
5696                <p class="release-description lang-en">Listen to Cortica's music on social media</p>
5697                <div class="streaming-links">
5698                    <a href="https://www.youtube.com/@CorticaOfficial" target="_blank" class="streaming-link">YouTube</a>
5699                    <a href="https://www.instagram.com/corticaofficial/" target="_blank" class="streaming-link">Instagram</a>
5700                    <a href="https://www.tiktok.com/@corticaofficial" target="_blank" class="streaming-link">TikTok</a>
5701                </div>
5702            </div>
5703        </div>
5704    </div>
5705    </div>
5706</section>
5707
5708<section class="section section-dark" id="videos">
5709    <div class="container">
5710        <h2 class="section-title lang-pt">V\xeddeos Musicais</h2>
5711        <h2 class="section-title lang-en">Music Videos</h2>
5712        <div class="videos-grid" id="videosGrid">
5713        <div class="video-card">
5714            <div class="video-embed">📹</div>
5715            <div class="video-info">
5716                <h3 class="video-title lang-pt">Corti\xe7a - V\xeddeo Musical</h3>
5717                <h3 class="video-title lang-en">Cortica - Music Video</h3>
5718                <p class="lang-pt">Assista aos nossos \xfaltimos v\xeddeos musicais e apresenta\xe7\xf5es ao vivo no YouTube</p>
5719                <p class="lang-en">Watch our latest music videos and live performances on YouTube</p>
5720                <a href="https://www.youtube.com/@CorticaOfficial" target="_blank" class="video-link lang-pt">Ver no YouTube →</a>
5721                <a href="https://www.youtube.com/@CorticaOfficial" target="_blank" class="video-link lang-en">Watch on YouTube →</a>
5722            </div>
5723        </div>
5724        <div class="video-card">
5725            <div class="video-embed">🎬</div>
5726            <div class="video-info">
5727                <h3 class="video-title lang-pt">V\xeddeos Curtos</h3>
5728                <h3 class="video-title lang-en">Short Videos</h3>
5729                <p class="lang-pt">Siga os nossos bastidores e clipes musicais no TikTok e Instagram</p>
5730                <p class="lang-en">Follow our behind-the-scenes and music clips on TikTok and Instagram</p>
5731                <a href="https://www.tiktok.com/@corticaofficial" target="_blank" class="video-link lang-pt">Ver no TikTok →</a>
5732                <a href="https://www.tiktok.com/@corticaofficial" target="_blank" class="video-link lang-en">Watch on TikTok →</a>
5733            </div>
5734        </div>
5735    </div>
5736        <div class="view-all-btn">
5737            <a href="https://www.youtube.com/@CorticaOfficial" target="_blank" class="lang-pt">Ver Mais no YouTube</a>
5738            <a href="https://www.youtube.com/@CorticaOfficial" target="_blank" class="lang-en">Watch More on YouTube</a>
5739        </div>
5740    </div>
5741</section>
5742
5743<section class="section" id="news">
5744    <div class="container">
5745        <h2 class="section-title lang-pt">\xdaltimas Not\xedcias</h2>
5746        <h2 class="section-title lang-en">Latest News</h2>
5747        <div class="news-grid" id="newsGrid">
5748        <div class="news-card">
5749            <div class="news-image">📰</div>
5750            <div class="news-content">
5751                <h3 class="news-title lang-pt">Bem-vindo ao Mundo de Corti\xe7a</h3>
5752                <h3 class="news-title lang-en">Welcome to Cortica's World</h3>
5753                <p class="news-excerpt lang-pt">Siga-nos nas redes sociais para as \xfaltimas not\xedcias sobre a banda, novos lan\xe7amentos e concertos ao vivo</p>
5754                <p class="news-excerpt lang-en">Follow us on social media for latest news about the band, new releases, and live concerts</p>
5755                <a href="https://www.instagram.com/corticaofficial/" target="_blank" class="read-more lang-pt">Seguir no Instagram →</a>
5756                <a href="https://www.instagram.com/corticaofficial/" target="_blank" class="read-more lang-en">Follow on Instagram →</a>
5757            </div>
5758        </div>
5759        <div class="news-card">
5760            <div class="news-image">🎤</div>
5761            <div class="news-content">
5762                <h3 class="news-title lang-pt">Conhe\xe7a os Artistas</h3>
5763                <h3 class="news-title lang-en">Meet the Artists</h3>
5764                <p class="news-excerpt lang-pt">Descubra as hist\xf3rias dos nossos 12 artistas e assista aos momentos de ensaio e concerto nas nossas p\xe1ginas</p>
5765                <p class="news-excerpt lang-en">Discover the stories of our 12 artists and watch rehearsal and concert moments on our pages</p>
5766                <a href="https://facebook.com/corticaofficial" target="_blank" class="read-more lang-pt">Visite Nossa P\xe1gina →</a>
5767                <a href="https://facebook.com/corticaofficial" target="_blank" class="read-more lang-en">Visit Our Page →</a>
5768            </div>
5769        </div>
5770    </div>
5771    </div>
5772</section>
5773
5774<footer class="main-footer">
5775    <div class="container">
5776        <div class="social-links">
5777            <a href="https://www.youtube.com/@CorticaOfficial" target="_blank" class="social-link">▶</a>
5778            <a href="https://www.instagram.com/corticaofficial/" target="_blank" class="social-link">📷</a>
5779            <a href="https://www.tiktok.com/@corticaofficial" target="_blank" class="social-link">🎵</a>
5780            <a href="https://facebook.com/corticaofficial" target="_blank" class="social-link">👥</a>
5781        </div>
5782        <p class="lang-pt">&copy; 2025 Corti\xe7a Cortica. Todos os direitos reservados.</p>
5783        <p class="lang-en">&copy; 2025 Cortica. All rights reserved.</p>
5784    </div>
5785</footer>
5786
5787
5788
5789
5790<div id="bioPages">
5791<div id="bio-andre-figueira" class="bio-page">
5792            <div class="bio-header">
5793                <div class="container">
5794                    <a href="#artists" data-action="back" class="back-button lang-pt">← Voltar aos Artistas</a>
5795                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
5796                </div>
5797            </div>
5798            
5799            <div class="bio-content">
5800                <div class="bio-card">
5801                    <div class="bio-image-section">
5802                        <img src="https://media.echovira.com/cortica/cortiya_andre_figueira_male_singer_portrait_0.png" alt="Andre Figueira" class="bio-artist-image"
5803                srcset="https://media.echovira.com/cortica/cortiya_andre_figueira_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/cortica/cortiya_andre_figueira_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/cortica/cortiya_andre_figueira_male_singer_portrait_0-full.
5803webp 1024w"
5804                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
5805                    </div>
5806                    <div class="bio-text-section">
5807                        <div class="bio-artist-title">
5808                            <h1>Andre Figueira</h1>
5809                            <div class="stage-name">"Andre" • 26 anos / years</div>
5810                            <div class="role lang-pt">Cantor</div>
5811                            <div class="role lang-en">Male Singer</div>
5812                        </div>
5813                        <div class="bio-description lang-pt">
5814                            <p>Conhe\xe7a Andr\xe9 Figueira (Andr\xe9), 26 anos, vocalista da banda Corti\xe7a: voz potente, timbre caloroso e presen\xe7a de palco vibrante! O cantor traz energia contagiante e fraseado preciso que moldam o som do grupo, elevando cada can\xe7\xe3o com emo\xe7\xe3o e groove.</p><p>A sua voz mistura um timbre quente e ligeiramente \xe1spero com um amplo alcance, fraseado preciso e din\xe2micas expressivas que elevam versos \xedntimos e alimentam grandes refr\xf5es. Influenciado pelo indie rock, folk e pop soulful, ele traz sensibilidade mel\xf3dica aos arranjos da banda.</p><p>No palco, o seu timing e presen\xe7a interativa moldam a energia ao vivo de Corti\xe7a, apertando din\xe2micas e aprofundando a conex\xe3o com a multid\xe3o. O seu controle din\xe2mico e fraseado claro j\xe1 est\xe3o reformulando setlists e takes de est\xfadio. Preparem-se para m\xfasicas novas que mostram sua t\xe9cnica vocal e carisma — sigam, comentem e ou\xe7am o pr\xf3ximo single!</p>
5815                        </div>
5816                        <div class="bio-description lang-en">
5817                            <p>Meet Andre Figueira (Andre), 26 — the new male singer of Cortica. A lively performer with engaging stage charisma. His voice blends a warm, slightly gritty timbre with a wide range, precise phrasing and expressive dynamics that lift intimate verses and power big choruses.</p><p>Influenced by indie rock, folk and soulful pop, he brings melodic sensitivity to the band's arrangements. On stage his timing and interactive presence shape Cortica's live energy, tightening dynamics and deepening crowd connection.</p><p>His dynamic control and clear phrasing are already reshaping setlists and studio takes. Listen to Cortica's latest releases to hear how Andre colors the songs and pushes the band's sound forward.</p>
5818                        </div>
5819                    </div>
5820                </div>
5821            </div>
5822        </div>
5823<div id="bio-beatriz-santos" class="bio-page">
5824            <div class="bio-header">
5825                <div class="container">
5826                    <a href="#artists" data-action="back" class="back-button lang-pt">← Voltar aos Artistas</a>
5827                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
5828                </div>
5829            </div>
5830            
5831            <div class="bio-content">
5832                <div class="bio-card">
5833                    <div class="bio-image-section">
5834                        <img src="https://media.echovira.com/cortica/cortiya_beatriz_santos_female_singer_portrait_1.png" alt="Beatriz Santos" class="bio-artist-image"
5835                srcset="https://media.echovira.com/cortica/cortiya_beatriz_santos_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/cortica/cortiya_beatriz_santos_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/cortica/cortiya_beatriz_santos_female_singer_portrait_1-full.webp 1024w"
5836                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
5837                    </div>
5838                    <div class="bio-text-section">
5839                        <div class="bio-artist-title">
5840                            <h1>Beatriz Santos</h1>
5841                            <div class="stage-name">"Bea" • 25 anos / years</div>
5842                            <div class="role lang-pt">Cantora</div>
5843                            <div class="role lang-en">Female Singer</div>
5844                        </div>
5845                        <div class="bio-description lang-pt">
5846                            <p>Conhe\xe7am a Bea (Beatriz Santos), 25 anos — a voz diva de Corti\xe7a: vocais que elevam e presen\xe7a de palco poderosa. Com timbre quente, agudos brilhantes e energia visceral, ela \xe9 respons\xe1vel por moldar o som da banda e transformar cada can\xe7\xe3o ao vivo.
5846</p><p>Bea traz um timbre rico e ressonante, amplo alcance, fraseado preciso e controlo din\xe2mico pensado, moldado por influ\xeancias de soul e indie-rock. As suas linhas vocais alt\xedssimas e presen\xe7a de palco focada d\xe3o a Corti\xe7a os seus picos emocionais e momentum ao vivo.</p><p>No est\xfadio, ela colore melodias com vibrato sutil e momentos clim\xe1ticos ousados; no palco, ela estende frases e empurra a banda para texturas maiores. Preparem-se para novas m\xfasicas e shows — sigam-nos, ou\xe7am o pr\xf3ximo single e deixem um ❤️ nos coment\xe1rios!</p>
5847                        </div>
5848                        <div class="bio-description lang-en">
5849                            <p>Meet Bea (Beatriz Santos), the 25-year-old female singer joining Cortica. Her commanding, expressive voice lifts the band's sound to new heights. Bea brings a rich, resonant timbre, wide range, precise phrasing and thoughtful dynamic control, shaped by soul and indie-rock influences.</p><p>Her soaring vocal lines and focused stage presence give Cortica its emotional peaks and live momentum. In the studio she colors melodies with subtle vibrato and bold climactic moments; on stage she stretches phrases and drives the band into bigger textures.</p><p>Bea's role reshapes arrangements and pushes the group's energy, turning quieter passages into intense sing-along moments.</p>
5850                        </div>
5851                    </div>
5852                </div>
5853            </div>
5854        </div>
5855<div id="bio-catarina-lopes" class="bio-page">
5856            <div class="bio-header">
5857                <div class="container">
5858                    <a href="#artists" data-action="back" class="back-button lang-pt">← Voltar aos Artistas</a>
5859                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
5860                </div>
5861            </div>
5862            
5863            <div class="bio-content">
5864                <div class="bio-card">
5865                    <div class="bio-image-section">
5866                        <img src="https://media.echovira.com/cortica/cortiya_catarina_lopes_female_singer_portrait_1.png" alt="Catarina Lopes" class="bio-artist-image"
5867                srcset="https://media.echovira.com/cortica/cortiya_catarina_lopes_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/cortica/cortiya_catarina_lopes_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/cortica/cortiya_catarina_lopes_female_singer_portrait_1-full.webp 1024w"
5868                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
5869                    </div>
5870                    <div class="bio-text-section">
5871                        <div class="bio-artist-title">
5872                            <h1>Catarina Lopes</h1>
5873                            <div class="stage-name">"Catarina" • 27 anos / years</div>
5874                            <div class="role lang-pt">Cantora</div>
5875                            <div class="role lang-en">Female Singer</div>
5876                        </div>
5877                        <div class="bio-description lang-pt">
5878                            <p>Conhe\xe7am a Catarina Lopes — Catarina, 27 anos, a voz feminina e a estrela dram\xe1tica com aura feroz que d\xe1 alma ao som da Corti\xe7a! Com timbre potente, nuances emotivas e uma presen\xe7a cenogr\xe1fica, ela transforma cada can\xe7\xe3o em narrativa viva e eleva o groove da banda.</p><p>O seu timbre esfuma\xe7ado mas \xe1gil abrange um amplo alcance; fraseado preciso, controle din\xe2mico e acenos ao indie-rock e fado d\xe3o a cada linha intimidade crua e impulso teatral. Como voz principal de Corti\xe7a, Catarina molda arranjos no palco e em disco, transformando grooves sutis em picos cat\xe1rticos.</p><p>No est\xfadio, o seu fraseado guia escolhas de produ\xe7\xe3o para que as m\xfasicas equilibrem clareza com intensidade calorosa. Preparem-se para o novo material: a energia vocal de Catarina vai brilhar em faixas que j\xe1 est\xe3o a caminho — sigam-nos e deixem nos coment\xe1rios o vosso apoio!</p>
5879                        </div>
5880                        <div class="bio-description lang-en">
5881                            <p>Meet Catarina Lopes (stage name: Catarina) — 27, the female singer of Cortica. A dramatic performer with a fierce, magnetic stage presence. Her smoky yet agile timbre spans a wide range; precise phrasing, dynamic control and nods to indie-rock and fado give each line raw intimacy and theatrical drive.</p><p>As Cortica's lead voice, Catarina shapes arrangements on stage and record, turning subtle grooves into cathartic peaks and making live shows feel immediate and unpredictable. In the studio her phrasing guides production choices so the songs balance clarity with warm intensity.</p>
5882                        </div>
5883                    </div>
5884                </div>
5885            </div>
5886        </div>
5887<div id="bio-clara-ribeiro" class="bio-page">
5888            <div class="bio-header">
5889                <div class="container">
5890                    <a href="#artists" data-action="back" class="back-button lang-pt">← Voltar aos Artistas</a>
5891                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
5892                </div>
5893            </div>
5894            
5895            <div class="bio-content">
5896                <div class="bio-card">
5897                    <div class="bio-image-section">
5898                        <img src="https://media.echovira.com/cortica/cortiya_clara_ribeiro_composer_lyricist_portrait_1.png" alt="Clara Ribeiro" class="bio-artist-image"
5899                srcset="https://media.echovira.com/cortica/cortiya_clara_ribeiro_composer_lyricist_portrait_1-400.webp 400w, https://media.echovira.com/cortica/cortiya_clara_ribeiro_composer_lyricist_portrait_1-800.webp 800w, https://media.echovira.com/cortica/cortiya_clara_ribeiro_composer_lyricist_portrait_1-full.
5899webp 1024w"
5900                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
5901                    </div>
5902                    <div class="bio-text-section">
5903                        <div class="bio-artist-title">
5904                            <h1>Clara Ribeiro</h1>
5905                            <div class="stage-name">"Clara" • 26 anos / years</div>
5906                            <div class="role lang-pt">Compositora & Letrista</div>
5907                            <div class="role lang-en">Composer & Lyricist</div>
5908                        </div>
5909                        <div class="bio-description lang-pt">
5910                            <p>Conhe\xe7am Clara Ribeiro — Clara, 26 anos, compositora e letrista do Corti\xe7a, a mente criativa por tr\xe1s das nossas can\xe7\xf5es. Como letrista po\xe9tica, ela imprime profundidade e temas rom\xe2nticos; como compositora, constr\xf3i melodias \xedntimas atrav\xe9s de um processo criativo atento.</p><p>Como principal compositora da banda, as melodias e escolhas harm\xf4nicas de Clara moldam a identidade sonora de Corti\xe7a e d\xe3o aos seus shows ao vivo uma energia silenciosamente intensa. Como compositora, ela cria motivos mel\xf3dicos memor\xe1veis, progress\xf5es inventivas e arranjos claros que guiam a estrutura de cada m\xfasica.</p><p>Como letrista, ela usa imagens v\xedvidas, narrativa \xedntima e cad\xeancia deliberada para revelar nuance emocional e clareza narrativa. O trabalho dela molda o som do Corti\xe7a e vem a\xed m\xfasica nova que revela toda a sua sensibilidade — ou\xe7am, comentem e sigam para n\xe3o perder nada!</p>
5911                        </div>
5912                        <div class="bio-description lang-en">
5913                            <p>Meet Clara (Clara Ribeiro), 26 — Composer & Lyricist of Cortica. A poetic lyricist who explores depth and romantic themes. As the band's principal songwriter, Clara's melodies and harmonic choices shape Cortica's sonic identity and give its live shows a quietly intense energy.</p><p>As a composer she crafts memorable melodic motifs, inventive progressions and clear arrangements that guide each song's structure. As a lyricist she uses vivid imagery, intimate storytelling and deliberate cadence to reveal emotional nuance and narrative clarity.</p><p>That combination defines Cortica's studio sound and fuels the band's live energy, turning quiet moments into cinematic peaks on stage.</p>
5914                        </div>
5915                    </div>
5916                </div>
5917            </div>
5918        </div>
5919<div id="bio-helena-martins" class="bio-page">
5920            <div class="bio-header">
5921                <div class="container">
5922                    <a href="#artists" data-action="back" class="back-button lang-pt">← Voltar aos Artistas</a>
5923                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
5924                </div>
5925            </div>
5926            
5927            <div class="bio-content">
5928                <div class="bio-card">
5929                    <div class="bio-image-section">
5930                        <img src="https://media.echovira.com/cortica/cortiya_helena_martins_multi_instrumentalist_portrait_0.png" alt="Helena Martins" class="bio-artist-image"
5931                srcset="https://media.echovira.com/cortica/cortiya_helena_martins_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/cortica/cortiya_helena_martins_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/cortica/cortiya_helena_martins_multi_instrumentalist_portrait_0-full.webp 1024w"
5932                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
5933                    </div>
5934                    <div class="bio-text-section">
5935                        <div class="bio-artist-title">
5936                            <h1>Helena Martins</h1>
5937                            <div class="stage-name">"Helena" • 25 anos / years</div>
5938                            <div class="role lang-pt">Multi-instrumentista</div>
5939                            <div class="role lang-en">Multi-Instrumentalist</div>
5940                        </div>
5941                        <div class="bio-description lang-pt">
5942                            <p>Conhe\xe7am Helena Martins (Helena), 25, multi-instrumentista de Corti\xe7a — as m\xe3os m\xe1gicas do nosso som. Domina guitarra, teclado e arranjos percussivos com t\xe9cnica precisa, sensibilidade e uma criatividade que transforma as nossas fus\xf5es de pop, fado e eletr\xf3nica.</p><p>
5942Com 25 anos, Helena traz uma voz musical focada a Corti\xe7a, equilibrando clareza mel\xf3dica com timbres aventureiros. O seu toque e ideias movem-se entre fraseado preciso e texturas abertas que convidam \xe0 escuta.</p><p>Como multi-instrumentista, a sua t\xe9cnica favorece articula\xe7\xe3o clara, tons quentes e grooves apertados, com floreios improvisados que se tornam momentos ao vivo emblem\xe1ticos. Ela tamb\xe9m molda arranjos e camadas s\xf4nicas. Fiquem atentos aos pr\xf3ximos lan\xe7amentos e comentem qual instrumento querem ouvir em destaque!</p>
5943                        </div>
5944                        <div class="bio-description lang-en">
5945                            <p>Meet Helena Martins — Helena, the new multi-instrumentalist of Cortica. An experimental musician who fuses pop, fado and electronic textures. At 25, Helena brings a focused musical voice to Cortica, balancing melodic clarity with adventurous timbres.</p><p>As a multi-instrumentalist, her technique favors clear articulation, warm tones and tight grooves, with improvised flourishes that become hallmark live moments. She also shapes arrangements and sonic layers, choosing voicings and transitions that give the band its dynamic contrasts on record and in concert.</p><p>Her parts — from hook lines to background beds — help define Cortica's sound and lift the live energy, turning quiet passages into sing-along peaks.</p>
5946                        </div>
5947                    </div>
5948                </div>
5949            </div>
5950        </div>
5951<div id="bio-ines-oliveira" class="bio-page">
5952            <div class="bio-header">
5953                <div class="container">
5954                    <a href="#artists" data-action="back" class="back-button lang-pt">← Voltar aos Artistas</a>
5955                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
5956                </div>
5957            </div>
5958            
5959            <div class="bio-content">
5960                <div class="bio-card">
5961                    <div class="bio-image-section">
5962                        <img src="https://media.echovira.com/cortica/cortiya_ines_oliveira_female_singer_portrait_0.png" alt="Ines Oliveira" class="bio-artist-image"
5963                srcset="https://media.echovira.com/cortica/cortiya_ines_oliveira_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/cortica/cortiya_ines_oliveira_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/cortica/cortiya_ines_oliveira_female_singer_portrait_0-full.webp 1024w"
5964                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
5965                    </div>
5966                    <div class="bio-text-section">
5967                        <div class="bio-artist-title">
5968                            <h1>Ines Oliveira</h1>
5969                            <div class="stage-name">"Ines" • 23 anos / years</div>
5970                            <div class="role lang-pt">Cantora</div>
5971                            <div class="role lang-en">Female Singer</div>
5972                        </div>
5973                        <div class="bio-description lang-pt">
5974                            <p>Conhe\xe7a Ines (Ines Oliveira), 23 anos — a cantora de cora\xe7\xe3o caloroso da Corti\xe7a, entregando baladas pop emocionais e energia de palco eletrizante. A sua voz mistura calor aveludado com uma entrega \xedntima e expressiva que faz cada refr\xe3o aterrar direto no cora\xe7\xe3o.</p><p>O seu timbre \xe9 \xedntimo e claro, com um alcance flex\xedvel, fraseado expressivo e controle din\xe2mico cuidadoso enraizado em influ\xeancias de indie-pop e soul. No palco, a sua presen\xe7a molda os arranjos da banda — elevando momentos mais silenciosos em crescendos de banda completa.</p><p>No palco ela irradia energia contagiante e sinceridade, o n\xfacleo emocional que molda as texturas indie-pop de Corti\xe7a. Com 23 anos, ela j\xe1 transforma melodias simples em momentos inesquec\xedveis com nuance e poder. Preparem-se para as pr\xf3ximas faixas e datas ao vivo!</p>
5975                        </div>
5976                        <div class="bio-description lang-en">
5977                            <p>Meet Ines (Ines Oliveira), 23 — the warm‑hearted singer of Cortica, delivering emotional pop ballads and electrifying stage energy. Her voice blends velvety warmth with an intimate, expressive delivery that makes every chorus land straight in the heart.</p><p>Her timbre is intimate and clear, with a flexible range, expressive phrasing and careful dynamic control rooted in indie-pop and s
5977oul influences. On stage her presence shapes the band's arrangements—lifting quieter moments into full-band swells and giving live performances warm, immediate energy.</p><p>In the studio she collaborates on vocal textures and arrangements that highlight melody and storytelling, making Cortica's songs feel close and human.</p>
5978                        </div>
5979                    </div>
5980                </div>
5981            </div>
5982        </div>
5983<div id="bio-joao-marques" class="bio-page">
5984            <div class="bio-header">
5985                <div class="container">
5986                    <a href="#artists" data-action="back" class="back-button lang-pt">← Voltar aos Artistas</a>
5987                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
5988                </div>
5989            </div>
5990            
5991            <div class="bio-content">
5992                <div class="bio-card">
5993                    <div class="bio-image-section">
5994                        <img src="https://media.echovira.com/cortica/cortiya_joao_marques_male_singer_portrait_0.png" alt="Joao Marques" class="bio-artist-image"
5995                srcset="https://media.echovira.com/cortica/cortiya_joao_marques_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/cortica/cortiya_joao_marques_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/cortica/cortiya_joao_marques_male_singer_portrait_0-full.webp 1024w"
5996                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
5997                    </div>
5998                    <div class="bio-text-section">
5999                        <div class="bio-artist-title">
6000                            <h1>Joao Marques</h1>
6001                            <div class="stage-name">"Joao" • 27 anos / years</div>
6002                            <div class="role lang-pt">Cantor</div>
6003                            <div class="role lang-en">Male Singer</div>
6004                        </div>
6005                        <div class="bio-description lang-pt">
6006                            <p>Conhe\xe7am Joao Marques (stage name: Joao), 27 anos, o vocalista masculino da Corti\xe7a — um powerhouse vocal com entrega emocional intensa. A sua voz calorosa e energ\xe9tica molda o som da banda, trazendo din\xe2mica, alma e momentos arrebatadores tanto no palco quanto nas grava\xe7\xf5es.</p><p>O seu timbre quente e amplo alcance, fraseado preciso e din\xe2micas controladas, al\xe9m de uma presen\xe7a de palco comandante influenciada pelo indie rock e tons portugueses tradicionais, d\xe3o a Corti\xe7a um car\xe1ter vocal distinto.</p><p>A voz de Joao ancora os arranjos, elevando refr\xf5es e esculpindo espa\xe7o para momentos instrumentais para que as texturas de est\xfadio da banda se tornem imediatas no palco. Fiquem atentos \xe0s nossas pr\xf3ximas m\xfasicas que v\xe3o mostrar toda a sua pot\xeancia; comentem abaixo, sigam e partilhem!</p>
6007                        </div>
6008                        <div class="bio-description lang-en">
6009                            <p>Meet Joao Marques — Joao, 27, the new male singer of Cortica. A powerhouse vocalist with a strong emotional delivery. His warm timbre and broad range, precise phrasing and controlled dynamics, plus a commanding stage presence influenced by indie rock and traditional Portuguese tones, give Cortica a distinct vocal character.</p><p>Joao's voice anchors the arrangements, lifting choruses and carving space for instrumental moments so the band's studio textures become immediate on stage. On stage his phrasing and dynamic choices drive the band's peaks and quiets, turning each concert into a shaped emotional arc.</p>
6010                        </div>
6011                    </div>
6012                </div>
6013            </div>
6014        </div>
6015<div id="bio-mariana-costa" class="bio-page">
6016            <div class="bio-header">
6017                <div class="container">
6018                    <a href="#artists" data-action="back" class="back-button lang-pt">← Voltar aos Artistas</a>
6019                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
6020                </div>
6021            </div>
6022            
6023            <div class="bio-content">
6024                <div class="bio-card">
6025                    <div class="bio-image-section">
6026                        <img src="https://media.echovira.com/cortica/cortiya_mariana_costa_female_singer_portrait_1.png" alt="Mariana Costa" class="bio-artist-image"
6027                srcset="https://media.echovira.com/cortica/cortiya_mariana_costa_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/cortica/cortiya_mariana_costa_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/cortica/cortiya_mariana_costa_female_singer_portrait_1-full.
6027webp 1024w"
6028                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
6029                    </div>
6030                    <div class="bio-text-section">
6031                        <div class="bio-artist-title">
6032                            <h1>Mariana Costa</h1>
6033                            <div class="stage-name">"Mariana" • 26 anos / years</div>
6034                            <div class="role lang-pt">Cantora</div>
6035                            <div class="role lang-en">Female Singer</div>
6036                        </div>
6037                        <div class="bio-description lang-pt">
6038                            <p>Apresentamos Mariana (Mariana Costa) — a voz feminina de Corti\xe7a, 26 anos: pot\xeancia refinada, vocais suaves e eleg\xe2ncia. Com uma entrega que mistura for\xe7a e delicadeza, a Mariana traz uma energia que define o som da banda, elevando melodias e letras com presen\xe7a \xfanica.</p><p>O seu timbre mistura calor e clareza, o seu alcance abrange notas graves \xedntimas a agudos alt\xedssimos, e o seu fraseado e din\xe2micas d\xe3o vida \xe0s m\xfasicas. Influenciada pelo fraseado de jazz e indie pop contempor\xe2neo, a presen\xe7a de palco de Mariana equilibra sutileza com foco comandante.</p><p>Preparem-se para novas m\xfasicas que v\xe3o destacar os seus timbres aveludados, interpreta\xe7\xf5es intensas e aquele brilho nos refr\xe3es — voc\xeas v\xe3o sentir cada nota. Sigam-nos, ou\xe7am os lan\xe7amentos e deixem nos coment\xe1rios!</p>
6039                        </div>
6040                        <div class="bio-description lang-en">
6041                            <p>Meet Mariana Costa (stage name: Mariana) — 26, the new female singer of Cortica. A refined voice: smooth vocals delivered with poised elegance. Her timbre blends warmth and clarity, her range spans intimate low notes to soaring highs, and her phrasing and dynamics bring songs to life.</p><p>Influenced by jazz phrasing and contemporary indie pop, Mariana's stage presence balances subtlety with commanding focus. As Cortica's lead vocalist she shapes the band's sonic identity — her vocal colors and rhythmic choices guide arrangements and lift the live energy.</p>
6042                        </div>
6043                    </div>
6044                </div>
6045            </div>
6046        </div>
6047<div id="bio-miguel-carvalho" class="bio-page">
6048            <div class="bio-header">
6049                <div class="container">
6050                    <a href="#artists" data-action="back" class="back-button lang-pt">← Voltar aos Artistas</a>
6051                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
6052                </div>
6053            </div>
6054            
6055            <div class="bio-content">
6056                <div class="bio-card">
6057                    <div class="bio-image-section">
6058                        <img src="https://media.echovira.com/cortica/cortiya_miguel_carvalho_male_singer_portrait_0.png" alt="Miguel Carvalho" class="bio-artist-image"
6059                srcset="https://media.echovira.com/cortica/cortiya_miguel_carvalho_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/cortica/cortiya_miguel_carvalho_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/cortica/cortiya_miguel_carvalho_male_singer_portrait_0-full.webp 1024w"
6060                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
6061                    </div>
6062                    <div class="bio-text-section">
6063                        <div class="bio-artist-title">
6064                            <h1>Miguel Carvalho</h1>
6065                            <div class="stage-name">"Miguel" • 25 anos / years</div>
6066                            <div class="role lang-pt">Cantor</div>
6067                            <div class="role lang-en">Male Singer</div>
6068                        </div>
6069                        <div class="bio-description lang-pt">
6070                            <p>Conhe\xe7am Miguel Carvalho — Miguel, 25, o vocalista da Corti\xe7a: frontman de alma, voz apaixonada e carisma magn\xe9tico. A sua voz, cheia de alma, cor e energia, guia o som da banda e transforma as nossas can\xe7\xf5es em viagens emocionais inesquec\xedveis.</p><p>O seu fraseado e entrega din\xe2mica moldam o som de Corti\xe7a, transformando melodias \xedntimas em momentos ao vivo poderosos. No palco, ele conduz a energia da banda — guiando tempo, humor e conex\xe3o com o p\xfablico.</p><p>No palco, Miguel d\xe1 vida \xe0s letras com presen\xe7a intensa e conex\xe3o verdadeira, elevando o som da Corti\xe7a a outro patamar. Como vocalista, ele traz um timbre quente e expressivo, amplo alcance, fraseado nuan\xe7ado e din\xe2micas ousadas. Deixem um ❤️, sigam a banda e digam nos coment\xe1rios qual m\xfasica querem ouvir primeiro!</p>
6071                        </div>
6072                        <div class="bio-description lang-en">
6073                            <p>Meet Miguel Carvalho — Miguel, Cortica's new frontman, 25. A soulful frontman whose passionate voice and magnetic presence gives the band its emotional core. His phrasing and dynamic delivery shape Cortica's sound, turning intimate melodies into powerful live moments.</p><p>On stage he drives the band's energy—guiding tempo, mood and audience connection—so recordings and gigs feel unified. As a vocalist he brings a warm, expressive timbre, wide range, nuanced phrasing and bold dynamics, with soulful and indie influences that inform his stage presence.</p>
6074                        </div>
6075                    </div>
6076                </div>
6077            </div>
6078        </div>
6079<div id="bio-pedro-almeida" class="bio-page">
6080            <div class="bio-header">
6081                <div class="container">
6082                    <a href="#artists" data-action="back" class="back-button lang-pt">← Voltar aos Artistas</a>
6083                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
6084                </div>
6085            </div>
6086            
6087            <div class="bio-content">
6088                <div class="bio-card">
6089                    <div class="bio-image-section">
6090                        <img src="https://media.echovira.com/cortica/cortiya_pedro_almeida_male_singer_portrait_1.png" alt="Pedro Almeida" class="bio-artist-image"
6091                srcset="https://media.echovira.com/cortica/cortiya_pedro_almeida_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/cortica/cortiya_pedro_almeida_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/cortica/cortiya_pedro_almeida_male_singer_portrait_1-full.
6091webp 1024w"
6092                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
6093                    </div>
6094                    <div class="bio-text-section">
6095                        <div class="bio-artist-title">
6096                            <h1>Pedro Almeida</h1>
6097                            <div class="stage-name">"Pedro" • 24 anos / years</div>
6098                            <div class="role lang-pt">Cantor</div>
6099                            <div class="role lang-en">Male Singer</div>
6100                        </div>
6101                        <div class="bio-description lang-pt">
6102                            <p>Conhe\xe7am Pedro Almeida (Pedro), 24 anos — voz crua e a fa\xedsca rockeira que define o som da Corti\xe7a. A sua voz gritty e a energia intensa no palco transformam cada tema num encontro visceral; t\xe9cnica vocal e express\xe3o que fazem a diferen\xe7a.</p><p>Como cantor masculino de Corti\xe7a, o seu timbre cru e ligeiramente rouco abrange um amplo alcance, com fraseado expressivo e controle din\xe2mico preciso enraizado em influ\xeancias cl\xe1ssicas de rock e punk.</p><p>No est\xfadio e ao vivo, Pedro traz presen\xe7a, atitude e sensibilidade que ligam as guitarras e melodias \xe0 alma da banda. As escolhas vocais de Pedro dirigem as din\xe2micas da banda — passagens suaves e mel\xf3dicas e crescendos de refr\xe3o estridentes. Fiquem atentos aos novos lan\xe7amentos!</p>
6103                        </div>
6104                        <div class="bio-description lang-en">
6105                            <p>Meet Pedro Almeida — Pedro, 24, the new voice of Cortica. He brings a rocker spark and gritty on-stage energy. As Cortica's male singer, his raw, slightly gravelly timbre spans a broad range, with expressive phrasing and precise dynamic control rooted in classic rock and punk influences.</p><p>Pedro's vocal choices steer the band's dynamics—soft, melodic passages and raucous chorus swells—giving Cortica its push-and-pull intensity. On stage his presence translates studio arrangements into a visceral live experience that tightens the band's groove and lifts crowd response.</p>
6106                        </div>
6107                    </div>
6108                </div>
6109            </div>
6110        </div>
6111<div id="bio-sofia-matos" class="bio-page">
6112            <div class="bio-header">
6113                <div class="container">
6114                    <a href="#artists" data-action="back" class="back-button lang-pt">← Voltar aos Artistas</a>
6115                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
6116                </div>
6117            </div>
6118            
6119            <div class="bio-content">
6120                <div class="bio-card">
6121                    <div class="bio-image-section">
6122                        <img src="https://media.echovira.com/cortica/cortiya_sofia_matos_female_singer_portrait_1.png" alt="Sofia Matos" class="bio-artist-image"
6123                srcset="https://media.echovira.com/cortica/cortiya_sofia_matos_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/cortica/cortiya_sofia_matos_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/cortica/cortiya_sofia_matos_female_singer_portrait_1-full.webp 1024w"
6124                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
6125                    </div>
6126                    <div class="bio-text-section">
6127                        <div class="bio-artist-title">
6128                            <h1>Sofia Matos</h1>
6129                            <div class="stage-name">"Sofia" • 24 anos / years</div>
6130                            <div class="role lang-pt">Cantora</div>
6131                            <div class="role lang-en">Female Singer</div>
6132                        </div>
6133                        <div class="bio-description lang-pt">
6134                            <p>Conhe\xe7am Sofia Matos (Sofia), 24 anos — a nova voz feminina da Corti\xe7a: poderosa, vers\xe1til e cheia de energia no palco! Com uma voz quente e cristalina, que mistura pop-folk e soul, Sofia \xe9 uma performer brincalhona, divertida e super pr\xf3xima do p\xfablico.</p><p>Como cantora feminina de Corti\xe7a, ela ajuda a moldar o som e a energia ao vivo da banda, transformando arranjos em momentos que parecem \xedntimos e imediatos. A sua voz situa-se com um timbre claro e expressivo e um alcance \xe1gil.</p><p>Transformando cada can\xe7\xe3o num momento \xedntimo e contagiante. No palco, ela l\xea a sala, convidando a chamada e resposta e intera\xe7\xe3o divertida que eleva o tempo e o humor. Preparem-se para as novas m\xfasicas da Corti\xe7a onde a sua entrega vocal e presen\xe7a v\xe3o elevar o som da banda!</p>
6135                        </div>
6136                        <div class="bio-description lang-en">
6137                            <p>Meet Sofia Matos — Sofia, Cortica's new lead singer (24). A playful performer who loves to engage the crowd, keeping shows lively and warm. As Cortica's female singer she helps shape the band's sound and live energy, turning arrangements into moments that feel intimate and immediate.</p><p>Her voice sits with a clear, expressive timbre and an agile range, using intimate phrasing and bold dynamics to move from whisper to full-band climaxes. On stage she reads the room, inviting call-and-response and playful interaction that lifts tempo and mood.</p><p>Influenced by indie pop and traditional Portuguese roots, she brings subtle phrasing and rhythmic nuance that c
6137olor the band's grooves.</p>
6138                        </div>
6139                    </div>
6140                </div>
6141            </div>
6142        </div>
6143<div id="bio-tiago-sousa" class="bio-page">
6144            <div class="bio-header">
6145                <div class="container">
6146                    <a href="#artists" data-action="back" class="back-button lang-pt">← Voltar aos Artistas</a>
6147                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
6148                </div>
6149            </div>
6150            
6151            <div class="bio-content">
6152                <div class="bio-card">
6153                    <div class="bio-image-section">
6154                        <img src="https://media.echovira.com/cortica/cortiya_tiago_sousa_male_singer_portrait_0.png" alt="Tiago Sousa" class="bio-artist-image"
6155                srcset="https://media.echovira.com/cortica/cortiya_tiago_sousa_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/cortica/cortiya_tiago_sousa_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/cortica/cortiya_tiago_sousa_male_singer_portrait_0-full.webp 1024w"
6156                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
6157                    </div>
6158                    <div class="bio-text-section">
6159                        <div class="bio-artist-title">
6160                            <h1>Tiago Sousa</h1>
6161                            <div class="stage-name">"Tiago" • 23 anos / years</div>
6162                            <div class="role lang-pt">Cantor</div>
6163                            <div class="role lang-en">Male Singer</div>
6164                        </div>
6165                        <div class="bio-description lang-pt">
6166                            <p>Conhe\xe7am o Tiago (Tiago Sousa), 23 anos, a voz masculina da Corti\xe7a — brilho jovem, voz suave e vibra\xe7\xe3o moderna. Com presen\xe7a cheia de energia e timbre acolhedor, ele d\xe1 \xe0 banda aquele toque vocal que casa com guitarras e ritmos, moldando um som que j\xe1 conquista cora\xe7\xf5es.</p><p>A sua arte \xe9 definida por uma centelha juvenil, vocais suaves e uma vibra\xe7\xe3o moderna que mistura fraseado \xedntimo com produ\xe7\xe3o contempor\xe2nea. Como cantor principal de Corti\xe7a, ele molda o som da banda com um timbre quente e fraseado din\xe2mico.</p><p>Com 23 anos, ele j\xe1 transforma momentos silenciosos em cl\xedmax convincentes e aumenta a energia ao vivo. O seu tenor cobre um amplo alcance com din\xe2micas controladas, fraseado expressivo e influ\xeancias claras de pop alternativo e soul. Preparem-se para novas m\xfasicas!</p>
6167                        </div>
6168                        <div class="bio-description lang-en">
6169                            <p>Meet Tiago — the new male singer of Cortica. Tiago Sousa, 23, performs under the stage name Tiago and brings a fresh presence to the band. His artistry is defined by a youthful spark, smooth vocals, and a modern vibe that blends intimate phrasing with contemporary production.</p><p>As Cortica's lead singer he shapes the band's sound with a warm timbre and dynamic phrasing, turning quiet moments into compelling climaxes and boosting live energy. His tenor covers a wide range with controlled dynamics, expressive phrasing, and clear influences from alternative pop and soul.</p>
6170                        </div>
6171                    </div>
6172                </div>
6173            </div>
6174        </div>
6175</div>
6176<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
6177  <nav aria-label="Site pages">
6178    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
6179    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
6180    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
6181    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
6182  </nav>
6183  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
6184</footer>
6185`;e.s(["CorticaEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=(0,t.injectFluidCanvas)(a,"#508020","#0d1117",.28);function s(e){document.body.classList.remove("lang-pt","lang-en"),document.body.classList.add("lang-"+e),a.querySelectorAll("[data-lang]").forEach(e
6185=>e.classList.remove("active")),a.querySelector(`[data-lang="${e}"]`)?.classList.add("active")}function r(e){a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display="none"});let i=document.getElementById("bio-"+e);i&&(i.classList.add("active"),window.scrollTo(0,0))}function n(){a.querySelectorAll(".bio-page").forEach(e=>e.classList.remove("active")),a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display=""}),window.scrollTo(0,0)}function o(e){let a=e.target,i=a.closest("[data-artist-id]");if(i){e.preventDefault(),r(i.dataset.artistId);return}if(a.closest('[data-action="back"]')){e.preventDefault(),n();return}}window.setLanguage=s,s("pt"),a.querySelector('[data-lang="pt"]')?.addEventListener("click",()=>s("pt")),a.querySelector('[data-lang="en"]')?.addEventListener("click",()=>s("en")),window.showArtistBio=r,window.hideBioPage=n,window.showMainPage=n;let l=document.getElementById("mobileToggle"),c=document.getElementById("navMenu");l&&c&&l.addEventListener("click",()=>c.classList.toggle("active"));let d=()=>document.getElementById("mainNav")?.classList.toggle("scrolled",window.scrollY>100);return a.addEventListener("click",o),window.addEventListener("scroll",d),()=>{i(),a.removeEventListener("click",o),window.removeEventListener("scroll",d),delete window.setLanguage,delete window.showArtistBio,delete window.hideBioPage,delete window.showMainPage}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,className:"echovira-page-root",dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(n)},suppressHydrationWarning:!0}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},84556,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n=`
6186    <link rel="preconnect" href="https://fonts.googleapis.com">
6187    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
6188    <link href="https://fonts.googleapis.com/css2?family=Oswald:wght@300;400;700&family=Playfair+Display:wght@400;700;900&display=swap" rel="stylesheet">
6189    <style>
6190        .entry-title, .post-edit-link, .site-footer, .site-info, .site-header, .site-branding, header.header, .masthead, .page-title {
6191            display: none !important;
6192        }
6193
6194        .vc_row[data-vc-full-width], .wpb_column, .vc_column_container, .wpb_wrapper, .entry-content, .site-content-contain, #content, .site-content, .site, #page, main {
6195            width: 100% !important;
6196            max-width: 100% !important;
6197            padding: 0 !important;
6198            margin: 0 !important;
6199            margin-top: 0 !important;
6200            padding-top: 0 !important;
6201        }
6202
6203        :root {
6204            --ev-bg: #000000;
6205            --ev-fg: #ffffff;
6206            --black: #000000;
6207            --white: #ffffff;
6208            --gray-dark: #1a1a1a;
6209            --gray-mid: #404040;
6210            --gray-light: #e0e0e0;
6211            --transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
6212        }
6213
6214        * {
6215            margin: 0;
6216            padding: 0;
6217            box-sizing: border-box;
6218        }
6219
6220        body {
6221            font-family: 'Oswald', sans-serif;
6222            background: var(--ev-bg);
6223            color: var(--ev-fg);
6224            overflow-x: hidden;
6225        }
6226
6227        /* Navigation */
6228        .main-nav {
6229            position: fixed;
6230            top: 0;
6231            left: 0;
6232            right: 0;
6233            /* Plain rgba() instead of color-mix(in srgb, var(--ev-bg) 98%, transparent):
6234               getComputedStyle().backgroundColor doesn't resolve color-mix()
6235               reliably, so the ADA contrast crawler read this as transparent
6236               and fell through to a lighter ancestor background, reporting
6237               white-on-near-white. --ada-contrast-bg doesn't help either --
6238               the crawler only honors it on elements with an actual
6239               background-image, and this is a background-color. rgba() is
6240               both visually identical (--ev-bg is a fixed #000000 on this
6241               page) and directly parseable. */
6242            background: rgba(0, 0, 0, 0.98);
6243            backdrop-filter: blur(10px);
6244            z-index: 1000;
6245            padding: 1.5rem 0;
6246            border-bottom: 1px solid rgba(255,255,255,0.1);
6247        }
6248
6249        .nav-container {
6250            max-width: 1400px;
6251            margin: 0 auto;
6252            padding: 0 40px;
6253            display: flex;
6254            justify-content: space-between;
6255            align-items: center;
6256        }
6257
6258        .logo img { 
6259            height: 60px;
6260            filter: invert(1);
6261        }
6262
6263        .nav-menu {
6264            display: flex;
6265            list-style: none;
6266            gap: 3rem;
6267        }
6268
6269        .nav-menu a {
6270            color: var(--white);
6271            text-decoration: none;
6272            font-weight: 300;
6273            font-size: 1.1rem;
6274            letter-spacing: 2px;
6275            text-transform: uppercase;
6276            transition: var(--transition);
6277            position: relative;
6278        }
6279
6280        .nav-menu a::after {
6281            content: '';
6282            position: absolute;
6283            bottom: -5px;
6284            left: 0;
6285            width: 0;
6286            height: 1px;
6287            background: var(--white);
6288            transition: var(--transition);
6289        }
6290
6291        .nav-menu a:hover::after {
6292            width: 100%;
6293        }
6294
6295        /* Hero Section */
6296        .hero-section {
6297            min-height: 100vh;
6298            display: flex;
6299            align-items: center;
6300            justify-content: center;
6301            position: relative;
6302            background: linear-gradient(135deg, #000000 0%, #1a1a1a 100%);
6303            overflow: hidden;
6304        }
6305
6306        .hero-section::before {
6307            content: '♪';
6308            position: absolute;
6309            font-size: 40rem;
6310            opacity: 0.03;
6311            top: 50%;
6312            left: 50%;
6313            transform: translate(-50%, -50%) rotate(-15deg);
6314            font-family: 'Playfair Display', serif;
6315        }
6316
6317        .hero-content {
6318            text-align: center;
6319            position: relative;
6320            z-index: 2;
6321            padding: 0 20px;
6322        }
6323
6324        .hero-title {
6325            font-family: 'Playfair Display', serif;
6326            font-size: clamp(4rem, 12vw, 10rem);
6327            font-weight: 900;
6328            letter-spacing: 0.2em;
6329            margin-bottom: 1rem;
6330            text-transform: uppercase;
6331            background: linear-gradient(135deg, #ffffff 0%, #808080 100%);
6332            -webkit-background-clip: text;
6333            -webkit-text-fill-color: transparent;
6334            background-clip: text;
6335        }
6336
6337        .hero-subtitle {
6338            font-size: clamp(1rem, 2vw, 1.5rem);
6339            letter-spacing: 0.3em;
6340            font-weight: 300;
6341            text-transform: uppercase;
6342            margin-bottom: 3rem;
6343            opacity: 0.8;
6344        }
6345
6346        .cta-button {
6347            display: inline-block;
6348            padding: 20px 60px;
6349            background: var(--white);
6350            color: var(--black);
6351            text-decoration: none;
6352            font-weight: 700;
6353            font-size: 1rem;
6354            letter-spacing: 3px;
6355            text-transform: uppercase;
6356            transition: var(--transition);
6357            border: 2px solid var(--white);
6358        }
6359
6360        .cta-button:hover {
6361            background: var(--black);
6362            color: var(--white);
6363            transform: translateY(-3px);
6364        }
6365
6366        /* Section Styles */
6367        .section {
6368            padding: 120px 0;
6369            position: relative;
6370        }
6371
6372        .section-light {
6373            background: var(--white);
6374            color: var(--black);
6375        }
6376
6377        .container {
6378            max-width: 1400px;
6379            margin: 0 auto;
6380            padding: 0 40px;
6381        }
6382
6383        .section-title {
6384            text-align: center;
6385            font-size: clamp(3rem, 6vw, 5rem);
6386            margin-bottom: 4rem;
6387            font-family: 'Playfair Display', serif;
6388            font-weight: 900;
6389            letter-spacing: 0.1em;
6390            text-transform: uppercase;
6391            position: relative;
6392        }
6393
6394        .section-title::after {
6395            content: '';
6396            position: absolute;
6397            bottom: -20px;
6398            left: 50%;
6399            transform: translateX(-50%);
6400            width: 100px;
6401            height: 2px;
6402            background: currentColor;
6403        }
6404
6405        /* About Section */
6406        .about-content {
6407            max-width: 1000px;
6408            margin: 0 auto;
6409            font-size: 1.2rem;
6410            line-height: 2;
6411            letter-spacing: 0.05em;
6412            font-weight: 300;
6413        }
6414
6415        .about-content p {
6416            margin-bottom: 2rem;
6417            text-align: center;
6418        }
6419
6420        /* Artists Gallery - Instrument Shaped Cards */
6421        .artists-gallery {
6422            display: grid;
6423            grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
6424            gap: 3rem;
6425            margin-top: 4rem;
6426        }
6427
6428        .artist-card {
6429            position: relative;
6430            cursor: pointer;
6431            transition: var(--transition);
6432            background: var(--white);
6433            color: var(--black);
6434            overflow: hidden;
6435            clip-path: polygon(10% 0%, 90% 0%, 100% 10%, 100% 90%, 90% 100%, 10% 100%, 0% 90%, 0% 10%);
6436        }
6437
6438        .section-light .artist-card {
6439            background: var(--black);
6440            color: var(--white);
6441        }
6442
6443        .artist-card:hover {
6444            transform: translateY(-10px) rotate(2deg);
6445        }
6446
6447        .artist-image-wrapper {
6448            position: relative;
6449            width: 100%;
6450            aspect-ratio: 1;
6451            overflow: hidden;
6452        }
6453
6454        .artist-image {
6455            width: 100%;
6456            height: 100%;
6457            object-fit: cover;
6458            transition: transform 0.6s ease, filter 0.6s ease;
6459            filter: grayscale(0%) contrast(100%);
6460        }
6461
6462        .artist-card:hover .artist-image {
6463            transform: scale(1.15);
6464            filter: grayscale(100%) contrast(120%);
6465        }
6466
6467        .artist-overlay {
6468            position: absolute;
6469            bottom: 0;
6470            left: 0;
6471            right: 0;
6472            background: linear-gradient(to top, rgba(0,0,0,0.95), transparent);
6473            padding: 2rem 1.5rem;
6474            color: white;
6475        }
6476
6477        .artist-stage-name {
6478            font-size: 1.8rem;
6479            font-weight: 700;
6480            margin-bottom: 0.5rem;
6481            letter-spacing: 0.1em;
6482            text-transform: uppercase;
6483        }
6484
6485        .artist-instrument {
6486            font-size: 0.9rem;
6487            font-weight: 300;
6488            letter-spacing: 0.2em;
6489            text-transform: uppercase;
6490            opacity: 0.9;
6491        }
6492
6493        .artist-real-name {
6494            font-size: 0.85rem;
6495            opacity: 0.7;
6496            margin-top: 0.5rem;
6497            font-style: italic;
6498        }
6499
6500        /* Bio Page */
6501        .bio-page {
6502            display: none;
6503            min-height: 100vh;
6504            padding-top: 100px;
6505            background: var(--black);
6506            color: var(--white);
6507        }
6508
6509        .bio-page.active {
6510            display: block;
6511        }
6512
6513        .bio-header {
6514            background: linear-gradient(135deg, #1a1a1a 0%, #000000 100%);
6515            padding: 4rem 0;
6516            text-align: center;
6517            border-bottom: 1px solid rgba(255,255,255,0.1);
6518        }
6519
6520        .back-button {
6521            display: inline-block;
6522            padding: 12px 30px;
6523            background: transparent;
6524            color: white;
6525            text-decoration: none;
6526            border: 1px solid white;
6527            margin-bottom: 2rem;
6528            transition: var(--transition);
6529            font-weight: 300;
6530            letter-spacing: 2px;
6531            text-transform: uppercase;
6532        }
6533
6534        .back-button:hover {
6535            background: white;
6536            color: black;
6537        }
6538
6539        .bio-content {
6540            max-width: 1200px;
6541            margin: -80px auto 0;
6542            position: relative;
6543            z-index: 10;
6544            padding: 0 40px 80px;
6545        }
6546
6547        .bio-card {
6548            background: var(--white);
6549            color: var(--black);
6550            overflow: hidden;
6551            clip-path: polygon(2% 0%, 98% 0%, 100% 2%, 100% 98%, 98% 100%, 2% 100%, 0% 98%, 0% 2%);
6552        }
6553
6554        .bio-image-section {
6555            padding: 4rem;
6556            text-align: center;
6557            background: linear-gradient(135deg, #f0f0f0 0%, #e0e0e0 100%);
6558            border-bottom: 2px solid var(--black);
6559        }
6560
6561        .bio-artist-image {
6562            width: 300px;
6563            height: 300px;
6564            border-radius: 50%;
6565            object-fit: cover;
6566            border: 8px solid var(--black);
6567        }
6568
6569        .bio-text-section {
6570            padding: 4rem;
6571        }
6572
6573        .bio-artist-title {
6574            text-align: center;
6575            margin-bottom: 3rem;
6576            padding-bottom: 2rem;
6577            border-bottom: 2px solid var(--gray-light);
6578        }
6579
6580        .bio-artist-title h1 {
6581            font-size: 3.5rem;
6582            margin-bottom: 1rem;
6583            font-family: 'Playfair Display', serif;
6584            font-weight: 900;
6585            letter-spacing: 0.1em;
6586            text-transform: uppercase;
6587        }
6588
6589        .bio-artist-title .stage-name {
6590            font-size: 1.8rem;
6591            font-weight: 300;
6592            margin-bottom: 1rem;
6593            letter-spacing: 0.2em;
6594        }
6595
6596        .bio-artist-title .instrument {
6597            display: inline-block;
6598            background: var(--black);
6599            color: white;
6600            padding: 12px 30px;
6601            font-size: 1rem;
6602            font-weight: 700;
6603            letter-spacing: 0.2em;
6604            text-transform: uppercase;
6605        }
6606
6607        .bio-description {
6608            line-height: 2;
6609            font-size: 1.1rem;
6610            font-weight: 300;
6611        }
6612
6613        .bio-description p {
6614            margin-bottom: 2rem;
6615        }
6616
6617        /* Content Cards */
6618        .content-grid {
6619            display: grid;
6620            grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
6621            gap: 3rem;
6622            margin-top: 4rem;
6623        }
6624
6625        .content-card {
6626            background: var(--white);
6627            color: var(--black);
6628            overflow: hidden;
6629            transition: var(--transition);
6630            border: 2px solid var(--black);
6631        }
6632
6633        .section-light .content-card {
6634            background: var(--black);
6635            color: var(--white);
6636            border: 2px solid var(--white);
6637        }
6638
6639        .content-card:hover {
6640            transform: translateY(-10px);
6641        }
6642
6643        .content-image {
6644            aspect-ratio: 16/9;
6645            background: linear-gradient(135deg, #1a1a1a 0%, #404040 100%);
6646            display: flex;
6647            align-items: center;
6648            justify-content: center;
6649            font-size: 5rem;
6650            color: white;
6651            border-bottom: 2px solid var(--black);
6652        }
6653
6654        .section-light .content-image {
6655            border-bottom: 2px solid var(--white);
6656        }
6657
6658        .content-info {
6659            padding: 2rem;
6660        }
6661
6662        .content-title {
6663            font-size: 1.5rem;
6664            margin-bottom: 1rem;
6665            font-weight: 700;
6666            letter-spacing: 0.1em;
6667            text-transform: uppercase;
6668        }
6669
6670        .content-description {
6671            font-size: 1rem;
6672            line-height: 1.8;
6673            margin-bottom: 1.5rem;
6674            font-weight: 300;
6675        }
6676
6677        .content-link {
6678            display: inline-block;
6679            padding: 12px 30px;
6680            background: var(--black);
6681            color: var(--white);
6682            text-decoration: none;
6683            font-weight: 700;
6684            letter-spacing: 2px;
6685            text-transform: uppercase;
6686            transition: var(--transition);
6687            border: 2px solid var(--black);
6688        }
6689
6690        .section-light .content-link {
6691            background: var(--white);
6692            color: var(--black);
6693            border: 2px solid var(--white);
6694        }
6695
6696        .content-link:hover {
6697            background: transparent;
6698            color: var(--black);
6699        }
6700
6701        .section-light .
6701content-link:hover {
6702            background: transparent;
6703            color: var(--white);
6704        }
6705
6706        /* Footer */
6707        .main-footer {
6708            background: var(--black);
6709            color: var(--white);
6710            padding: 4rem 0 2rem;
6711            text-align: center;
6712            border-top: 1px solid rgba(255,255,255,0.1);
6713        }
6714
6715        .social-links {
6716            display: flex;
6717            justify-content: center;
6718            gap: 2rem;
6719            margin-bottom: 3rem;
6720        }
6721
6722        .social-link {
6723            width: 60px;
6724            height: 60px;
6725            border: 2px solid var(--white);
6726            color: var(--white);
6727            display: flex;
6728            align-items: center;
6729            justify-content: center;
6730            text-decoration: none;
6731            font-size: 1.5rem;
6732            transition: var(--transition);
6733            clip-path: polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%);
6734        }
6735
6736        .social-link:hover {
6737            background: var(--white);
6738            color: var(--black);
6739            transform: rotate(45deg);
6740        }
6741
6742        .footer-text {
6743            font-weight: 300;
6744            letter-spacing: 0.2em;
6745            text-transform: uppercase;
6746            opacity: 0.7;
6747        }
6748
6749        @media (max-width: 768px) {
6750            .nav-menu {
6751                gap: 1.5rem;
6752                flex-wrap: wrap;
6753                justify-content: center;
6754            }
6755            
6756            .artists-gallery {
6757                grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
6758                gap: 2rem;
6759            }
6760
6761            .content-grid {
6762                grid-template-columns: 1fr;
6763            }
6764
6765            .bio-artist-image {
6766                width: 200px;
6767                height: 200px;
6768            }
6769        }
6770    
6771    .ev-nw-badge{position:fixed;bottom:72px;right:20px;z-index:9999;display:inline-flex;align-items:center;gap:5px;padding:8px 14px;background:rgba(2,2,8,.9);border:1px solid rgba(255,255,255,.14);border-radius:100px;font-size:.68rem;font-weight:600;color:rgba(255,255,255,.55);text-decoration:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);letter-spacing:.06em;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}
6772.ev-nw-badge:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(2,2,8,.97)}
6773.ev-nw-badge-mark{width:14px;height:14px;display:grid;grid-template-columns:1fr 1fr;gap:2px;flex-shrink:0}
6774.ev-nw-badge-mark span{background:currentColor;border-radius:2px;display:block}
6775  </style>
6776
6777<a href="https://echovira.com" class="ev-nw-badge" target="_blank" rel="noopener" title="EchoVira Music Network">
6778  <div class="ev-nw-badge-mark"><span></span><span></span><span></span><span></span></div>
6779  EchoVira
6780</a>
6781
6782<nav class="main-nav">
6783    <div class="nav-container">
6784        <a href="#home" class="logo">
6785            <img src="https://media.echovira.com/echovira/echoes_logo.png" alt="Echoes"
6786                srcset="https://media.echovira.com/echovira/echoes_logo-400.webp 400w, https://media.echovira.com/echovira/echoes_logo-800.webp 800w, https://media.echovira.com/echovira/echoes_logo-full.webp 1024w"
6787                sizes="50px" width="1024" height="1024" decoding="async">
6788        </a>
6789        <ul class="nav-menu">
6790            <li><a href="#home">Home</a></li>
6791            <li><a href="#about">About</a></li>
6792            <li><a href="#artists">Artists</a></li>
6793            <li><a href="#music">Music</a></li>
6794            <li><a href="#videos">Videos</a></li>
6795            <li><a href="#news">News</a></li>
6796        </ul>
6797    </div>
6798</nav>
6799
6800<span id="main-content" tabindex="-1"></span>
6801
6802<section class="hero-section" id="home">
6803    <div class="hero-content">
6804        <h1 class="hero-title">ECHOES</h1>
6805        <p class="hero-subtitle">Instrumental • World Music • 32 Virtuoso Artists</p>
6806        <a href="#about" class="cta-button">Experience The Sound</a>
6807    </div>
6808</section>
6809
6810<section class="section section-light" id="about">
6811    <div class="container">
6812        <h2 class="section-title">About Echoes</h2>
6813        <div class="about-content">
6814            <p>
6815                <strong>Echoes</strong> is an extraordinary instrumental collective bringing together 32 world-class musicians from across the globe. We create cinematic soundscapes that blend traditional instruments with contemporary compositions, crafting a sonic experience that transcends cultural boundaries. Our instrumental music band features virtuoso performers on saxophone, violin, cello, piano, trumpet, and a stunning array of world instruments including shakuhachi, bansuri, ney flute, djembe, tabla, sitar, sarangi, erhu, oud, kora, gayageum, shamisen, santur, qanun, bandone\xf3n, guqin, harp, classical guitar, electric guitar, crystal singing bowls, and handpan.
6816            </p>
6817            <p>
6818                From the haunting tones of the shakuhachi to the vibrant rhythms of the djembe, from the ethereal sounds of crystal singing bowls to the powerful voice of the trumpet — each instrument adds a unique color to our musical palette. Our instrumental band specializes in world music fusion, ambient soundscapes, cinematic scores, and cross-cultural compositions. We work with internationally acclaimed composers who craft intricate arrangements that showcase the virtuosity of each instrumentalist while creating cohesive, emotionally powerful pieces.
6819            </p>
6820            <p>
6821                Echoes represents the future of instrumental music — a celebration of global traditions meeting modern innovation, where every performance is a journey through sound, space, and emotion. Our music features elements of jazz fusion, world fusion, neo-classical, contemporary classical, ambient music, meditative music, and cinematic instrumental compositions. Each of our 32 talented artists brings their unique voice and mastery to create something truly magical — instrumental performances that move audiences worldwide.
6822            </p>
6823            <p>
6824                Experience live instrumental music at its finest with performances featuring traditional meets modern arrangements, acoustic magic, hand-crafted sound, and the passion of musicians dedicated to their craft. Echoes is more than a band — we are a global community of instrumentalists pushing the boundaries of what instrumental music can achieve, creating soundscapes for meditation, film scores, concerts, and immersive listening experiences.
6825            </p>
6826        </div>
6827    </div>
6828</section>
6829
6830<section class="section" id="artists">
6831    <div class="container">
6832        <h2 class="section-title">The Artists</h2>
6833        <div class="artists-gallery" id="artistsGallery">
6834<div class="artist-card" data-artist-id="adrian-cole" style="cursor:pointer">
6835            <div class="artist-image-wrapper">
6836                <img src="https://media.echovira.com/echoes/echoes_adrian_cole_saxophonist_portrait_0.png" alt="Adrian Cole" class="artist-image"
6837                srcset="https://media.echovira.com/echoes/echoes_adrian_cole_saxophonist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_adrian_cole_saxophonist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_adrian_cole_saxophonist_portrait_0-full.
6837webp 1024w"
6838                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6839                <div class="artist-overlay">
6840                    <div class="artist-stage-name">Adrian</div>
6841                    <div class="artist-instrument">Saxophonist</div>
6842                    <div class="artist-real-name">Adrian Cole • 27</div>
6843                </div>
6844            </div>
6845        </div><div class="artist-card" data-artist-id="akira-sato" style="cursor:pointer">
6846            <div class="artist-image-wrapper">
6847                <img src="https://media.echovira.com/echoes/echoes_akira_sato_shakuhachi_player_portrait_0.png" alt="Akira Sato" class="artist-image"
6848                srcset="https://media.echovira.com/echoes/echoes_akira_sato_shakuhachi_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_akira_sato_shakuhachi_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_akira_sato_shakuhachi_player_portrait_0-full.webp 1024w"
6849                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6850                <div class="artist-overlay">
6851                    <div class="artist-stage-name">Akira</div>
6852                    <div class="artist-instrument">Shakuhachi Player</div>
6853                    <div class="artist-real-name">Akira Sato • 25</div>
6854                </div>
6855            </div>
6856        </div><div class="artist-card" data-artist-id="amira-kouyate" style="cursor:pointer">
6857            <div class="artist-image-wrapper">
6858                <img src="https://media.echovira.com/echoes/echoes_amira_kouyate_djembe_player_portrait_0.png" alt="Amira Kouyate" class="artist-image"
6859                srcset="https://media.echovira.com/echoes/echoes_amira_kouyate_djembe_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_amira_kouyate_djembe_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_amira_kouyate_djembe_player_portrait_0-full.webp 1024w"
6860                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6861                <div class="artist-overlay">
6862                    <div class="artist-stage-name">Amira</div>
6863                    <div class="artist-instrument">Djembe Player</div>
6864                    <div class="artist-real-name">Amira Kouyate • 23</div>
6865                </div>
6866            </div>
6867        </div><div class="artist-card" data-artist-id="anaya-sen" style="cursor:pointer">
6868            <div class="artist-image-wrapper">
6869                <img src="https://media.echovira.com/echoes/echoes_anaya_sen_tabla_player_portrait_0.png" alt="Anaya Sen" class="artist-image"
6870                srcset="https://media.echovira.com/echoes/echoes_anaya_sen_tabla_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_anaya_sen_tabla_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_anaya_sen_tabla_player_portrait_0-full.webp 1024w"
6871                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6872                <div class="artist-overlay">
6873                    <div class="artist-stage-name">Anaya</div>
6874                    <div class="artist-instrument">Tabla Player</div>
6875                    <div class="artist-real-name">Anaya Sen • 23</div>
6876                </div>
6877            </div>
6878        </div><div class="artist-card" data-artist-id="aria-shad" style="cursor:pointer">
6879            <div class="artist-image-wrapper">
6880                <img src="https://media.echovira.com/echoes/echoes_aria_shad_santur_player_portrait_0.png" alt="Aria Shad" class="artist-image"
6881                srcset="https://media.echovira.com/echoes/echoes_aria_shad_santur_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_aria_shad_santur_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_aria_shad_santur_player_portrait_0-full.webp 1024w"
6882                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6883                <div class="artist-overlay">
6884                    <div class="artist-stage-name">Aria</div>
6885                    <div class="artist-instrument">Santur Player</div>
6886                    <div class="artist-real-name">Aria Shad • 24</div>
6887                </div>
6888            </div>
6889        </div><div class="artist-card" data-artist-id="arjun-rai" style="cursor:pointer">
6890            <div class="artist-image-wrapper">
6891                <img src="https://media.echovira.com/echoes/echoes_arjun_rai_sarangi_player_portrait_0.png" alt="Arjun Rai" class="artist-image"
6892                srcset="https://media.echovira.com/echoes/echoes_arjun_rai_sarangi_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_arjun_rai_sarangi_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_arjun_rai_sarangi_player_portrait_0-full.webp 1024w"
6893                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6894                <div class="artist-overlay">
6895                    <div class="artist-stage-name">Arjun</div>
6896                    <div class="artist-instrument">Sarangi Player</div>
6897                    <div class="artist-real-name">Arjun Rai • 27</div>
6898                </div>
6899            </div>
6900        </div><div class="artist-card" data-artist-id="charlotte-dupont" style="cursor:pointer">
6901            <div class="artist-image-wrapper">
6902                <img src="https://media.echovira.com/echoes/echoes_charlotte_dupont_composer_portrait_0.png" alt="Charlotte Dupont" class="artist-image"
6903                srcset="https://media.echovira.com/echoes/echoes_charlotte_dupont_composer_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_charlotte_dupont_composer_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_charlotte_dupont_composer_portrait_0-full.webp 1024w"
6904                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6905                <div class="artist-overlay">
6906                    <div class="artist-stage-name">Charlotte</div>
6907                    <div class="artist-instrument">Composer</div>
6908                    <div class="artist-real-name">Charlotte Dupont • 25</div>
6909                </div>
6910            </div>
6911        </div><div class="artist-card" data-artist-id="clara-voss" style="cursor:pointer">
6912            <div class="artist-image-wrapper">
6913                <img src="https://media.echovira.com/echoes/echoes_clara_voss_violinist_portrait_0.png" alt="Clara Voss" class="artist-image"
6914                srcset="https://media.echovira.com/echoes/echoes_clara_voss_violinist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_clara_voss_violinist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_clara_voss_violinist_portrait_0-full.webp 1024w"
6915                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6916                <div class="artist-overlay">
6917                    <div class="artist-stage-name">Clara</div>
6918                    <div class="artist-instrument">Violinist</div>
6919                    <div class="artist-real-name">Clara Voss • 24</div>
6920                </div>
6921            </div>
6922        </div><div class="artist-card" data-artist-id="dev-mehra" style="cursor:pointer">
6923            <div class="artist-image-wrapper">
6924                <img src="https://media.echovira.com/echoes/echoes_dev_mehra_bansuri_player_portrait_0.png" alt="Dev Mehra" class="artist-image"
6925                srcset="https://media.echovira.com/echoes/echoes_dev_mehra_bansuri_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_dev_mehra_bansuri_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_dev_mehra_bansuri_player_portrait_0-full.webp 1024w"
6926                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6927                <div class="artist-overlay">
6928                    <div class="artist-stage-name">Dev</div>
6929                    <div class="artist-instrument">Bansuri Player</div>
6930                    <div class="artist-real-name">Dev Mehra • 24</div>
6931                </div>
6932            </div>
6933        </div><div class="artist-card" data-artist-id="diego-navarro" style="cursor:pointer">
6934            <div class="artist-image-wrapper">
6935                <img src="https://media.echovira.com/echoes/echoes_diego_
6935navarro_bandoneyn_player_portrait_0.png" alt="Diego Navarro" class="artist-image"
6936                srcset="https://media.echovira.com/echoes/echoes_diego_navarro_bandoneyn_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_diego_navarro_bandoneyn_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_diego_navarro_bandoneyn_player_portrait_0-full.webp 1024w"
6937                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6938                <div class="artist-overlay">
6939                    <div class="artist-stage-name">Diego</div>
6940                    <div class="artist-instrument">Bandone\xf3n Player</div>
6941                    <div class="artist-real-name">Diego Navarro • 25</div>
6942                </div>
6943            </div>
6944        </div><div class="artist-card" data-artist-id="eleanor-graves" style="cursor:pointer">
6945            <div class="artist-image-wrapper">
6946                <img src="https://media.echovira.com/echoes/echoes_eleanor_graves_composer_portrait_0.png" alt="Eleanor Graves" class="artist-image"
6947                srcset="https://media.echovira.com/echoes/echoes_eleanor_graves_composer_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_eleanor_graves_composer_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_eleanor_graves_composer_portrait_0-full.webp 1024w"
6948                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6949                <div class="artist-overlay">
6950                    <div class="artist-stage-name">Eleanor</div>
6951                    <div class="artist-instrument">Composer</div>
6952                    <div class="artist-real-name">Eleanor Graves • 26</div>
6953                </div>
6954            </div>
6955        </div><div class="artist-card" data-artist-id="elena-solis" style="cursor:pointer">
6956            <div class="artist-image-wrapper">
6957                <img src="https://media.echovira.com/echoes/echoes_elena_solis_crystal_singing_bowls_player_portrait_0.png" alt="Elena Solis" class="artist-image"
6958                srcset="https://media.echovira.com/echoes/echoes_elena_solis_crystal_singing_bowls_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_elena_solis_crystal_singing_bowls_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_elena_solis_crystal_singing_bowls_player_portrait_0-full.webp 1024w"
6959                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6960                <div class="artist-overlay">
6961                    <div class="artist-stage-name">Elena</div>
6962                    <div class="artist-instrument">Crystal Singing Bowls Player</div>
6963                    <div class="artist-real-name">Elena Solis • 25</div>
6964                </div>
6965            </div>
6966        </div><div class="artist-card" data-artist-id="elise-laurent" style="cursor:pointer">
6967            <div class="artist-image-wrapper">
6968                <img src="https://media.echovira.com/echoes/echoes_elise_laurent_cellist_portrait_1.png" alt="Elise Laurent" class="artist-image"
6969                srcset="https://media.echovira.com/echoes/echoes_elise_laurent_cellist_portrait_1-400.webp 400w, https://media.echovira.com/echoes/echoes_elise_laurent_cellist_portrait_1-800.webp 800w, https://media.echovira.com/echoes/echoes_elise_laurent_cellist_portrait_1-full.webp 1024w"
6970                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6971                <div class="artist-overlay">
6972                    <div class="artist-stage-name">Elise</div>
6973                    <div class="artist-instrument">Cellist</div>
6974                    <div class="artist-real-name">Elise Laurent • 25</div>
6975                </div>
6976            </div>
6977        </div><div class="artist-card" data-artist-id="hana-sakamura" style="cursor:pointer">
6978            <div class="artist-image-wrapper">
6979                <img src="https://media.echovira.com/echoes/echoes_hana_sakamura_composer_portrait_0.png" alt="Hana Sakamura" class="artist-image"
6980                srcset="https://media.echovira.com/echoes/echoes_hana_sakamura_composer_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_hana_sakamura_composer_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_hana_sakamura_composer_portrait_0-full.
6980webp 1024w"
6981                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6982                <div class="artist-overlay">
6983                    <div class="artist-stage-name">Hana</div>
6984                    <div class="artist-instrument">Composer</div>
6985                    <div class="artist-real-name">Hana Sakamura • 24</div>
6986                </div>
6987            </div>
6988        </div><div class="artist-card" data-artist-id="haruto-aki" style="cursor:pointer">
6989            <div class="artist-image-wrapper">
6990                <img src="https://media.echovira.com/echoes/echoes_haruto_aki_shamisen_player_portrait_0.png" alt="Haruto Aki" class="artist-image"
6991                srcset="https://media.echovira.com/echoes/echoes_haruto_aki_shamisen_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_haruto_aki_shamisen_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_haruto_aki_shamisen_player_portrait_0-full.webp 1024w"
6992                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
6993                <div class="artist-overlay">
6994                    <div class="artist-stage-name">Haruto</div>
6995                    <div class="artist-instrument">Shamisen Player</div>
6996                    <div class="artist-real-name">Haruto Aki • 26</div>
6997                </div>
6998            </div>
6999        </div><div class="artist-card" data-artist-id="isabella-romero" style="cursor:pointer">
7000            <div class="artist-image-wrapper">
7001                <img src="https://media.echovira.com/echoes/echoes_isabella_romero_composer_portrait_0.png" alt="Isabella Romero" class="artist-image"
7002                srcset="https://media.echovira.com/echoes/echoes_isabella_romero_composer_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_isabella_romero_composer_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_isabella_romero_composer_portrait_0-full.webp 1024w"
7003                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7004                <div class="artist-overlay">
7005                    <div class="artist-stage-name">Isabella</div>
7006                    <div class="artist-instrument">Composer</div>
7007                    <div class="artist-real-name">Isabella Romero • 27</div>
7008                </div>
7009            </div>
7010        </div><div class="artist-card" data-artist-id="isla-hart" style="cursor:pointer">
7011            <div class="artist-image-wrapper">
7012                <img src="https://media.echovira.com/echoes/echoes_isla_hart_pianist_portrait_0.png" alt="Isla Hart" class="artist-image"
7013                srcset="https://media.echovira.com/echoes/echoes_isla_hart_pianist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_isla_hart_pianist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_isla_hart_pianist_portrait_0-full.webp 1024w"
7014                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7015                <div class="artist-overlay">
7016                    <div class="artist-stage-name">Isla</div>
7017                    <div class="artist-instrument">Pianist</div>
7018                    <div class="artist-real-name">Isla Hart • 23</div>
7019                </div>
7020            </div>
7021        </div><div class="artist-card" data-artist-id="jinae-park" style="cursor:pointer">
7022            <div class="artist-image-wrapper">
7023                <img src="https://media.echovira.com/echoes/echoes_jinae_park_gayageum_player_portrait_0.png" alt="Jinae Park" class="artist-image"
7024                srcset="https://media.echovira.com/echoes/echoes_jinae_park_gayageum_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_jinae_park_gayageum_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_jinae_park_gayageum_player_portrait_0-full.webp 1024w"
7025                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7026                <div class="artist-overlay">
7027                    <div class="artist-stage-name">Jinae</div>
7028                    <div class="artist-instrument">Gayageum Player</div>
7029                    <div class="artist-real-name">Jinae Park • 23</div>
7030                </div>
7031            </div>
7032        </div><div class="artist-card" data-artist-id="kwame-diallo" style="cursor:pointer">
7033            <div class="artist-image-wrapper">
7034                <img src="https://media.echovira.com/echoes/echoes_kwame_diallo_kora_player_portrait_0.png" alt="Kwame Diallo" class="artist-image"
7035                srcset="https://media.echovira.com/echoes/echoes_kwame_diallo_kora_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_kwame_diallo_kora_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_kwame_diallo_kora_player_portrait_0-full.
7035webp 1024w"
7036                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7037                <div class="artist-overlay">
7038                    <div class="artist-stage-name">Kwame</div>
7039                    <div class="artist-instrument">Kora Player</div>
7040                    <div class="artist-real-name">Kwame Diallo • 26</div>
7041                </div>
7042            </div>
7043        </div><div class="artist-card" data-artist-id="lian-zhou" style="cursor:pointer">
7044            <div class="artist-image-wrapper">
7045                <img src="https://media.echovira.com/echoes/echoes_lian_zhou_erhu_player_portrait_0.png" alt="Lian Zhou" class="artist-image"
7046                srcset="https://media.echovira.com/echoes/echoes_lian_zhou_erhu_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_lian_zhou_erhu_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_lian_zhou_erhu_player_portrait_0-full.webp 1024w"
7047                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7048                <div class="artist-overlay">
7049                    <div class="artist-stage-name">Lian</div>
7050                    <div class="artist-instrument">Erhu Player</div>
7051                    <div class="artist-real-name">Lian Zhou • 24</div>
7052                </div>
7053            </div>
7054        </div><div class="artist-card" data-artist-id="lina-darwish" style="cursor:pointer">
7055            <div class="artist-image-wrapper">
7056                <img src="https://media.echovira.com/echoes/echoes_lina_darwish_oud_player_portrait_0.png" alt="Lina Darwish" class="artist-image"
7057                srcset="https://media.echovira.com/echoes/echoes_lina_darwish_oud_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_lina_darwish_oud_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_lina_darwish_oud_player_portrait_0-full.webp 1024w"
7058                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7059                <div class="artist-overlay">
7060                    <div class="artist-stage-name">Lina</div>
7061                    <div class="artist-instrument">Oud Player</div>
7062                    <div class="artist-real-name">Lina Darwish • 26</div>
7063                </div>
7064            </div>
7065        </div><div class="artist-card" data-artist-id="lucia-navarro" style="cursor:pointer">
7066            <div class="artist-image-wrapper">
7067                <img src="https://media.echovira.com/echoes/echoes_lucia_navarro_classical_guitarist_portrait_0.png" alt="Lucia Navarro" class="artist-image"
7068                srcset="https://media.echovira.com/echoes/echoes_lucia_navarro_classical_guitarist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_lucia_navarro_classical_guitarist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_lucia_navarro_classical_guitarist_portrait_0-full.webp 1024w"
7069                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7070                <div class="artist-overlay">
7071                    <div class="artist-stage-name">Luc\xeda</div>
7072                    <div class="artist-instrument">Classical Guitarist</div>
7073                    <div class="artist-real-name">Lucia Navarro • 25</div>
7074                </div>
7075            </div>
7076        </div><div class="artist-card" data-artist-id="luiza-mendes" style="cursor:pointer">
7077            <div class="artist-image-wrapper">
7078                <img src="https://media.echovira.com/echoes/echoes_luiza_mendes_percussionist_portrait_0.png" alt="Luiza Mendes" class="artist-image"
7079                srcset="https://media.echovira.com/echoes/echoes_luiza_mendes_percussionist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_luiza_mendes_percussionist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_luiza_mendes_percussionist_portrait_0-full.webp 1024w"
7080                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7081                <div class="artist-overlay">
7082                    <div class="artist-stage-name">Luiza</div>
7083                    <div class="artist-instrument">Percussionist</div>
7084                    <div class="artist-real-name">Luiza Mendes • 24</div>
7085                </div>
7086            </div>
7087        </div><div class="artist-card" data-artist-id="mara-vogel" style="cursor:pointer">
7088            <div class="artist-image-wrapper">
7089                <img src="https://media.echovira.com/echoes/echoes_mara_vogel_composer_portrait_0.png" alt="Mara Vogel" class="artist-image"
7090                srcset="https://media.echovira.com/echoes/echoes_mara_vogel_composer_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_mara_vogel_composer_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_mara_vogel_composer_portrait_0-full.webp 1024w"
7091                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7092                <div class="artist-overlay">
7093                    <div class="artist-stage-name">Mara</div>
7094                    <div class="artist-instrument">Composer</div>
7095                    <div class="artist-real-name">Mara Vogel • 23</div>
7096                </div>
7097            </div>
7098        </div><div class="artist-card" data-artist-id="mei-lian" style="cursor:pointer">
7099            <div class="artist-image-wrapper">
7100                <img src="https://media.echovira.com/echoes/echoes_mei_lian_guqin_player_portrait_0.png" alt="Mei Lian" class="artist-image"
7101                srcset="https://media.echovira.com/echoes/echoes_mei_lian_guqin_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_mei_lian_guqin_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_mei_lian_guqin_player_portrait_0-full.webp 1024w"
7102                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7103                <div class="artist-overlay">
7104                    <div class="artist-stage-name">Mei</div>
7105                    <div class="artist-instrument">Guqin Player</div>
7106                    <div class="artist-real-name">Mei Lian • 24</div>
7107                </div>
7108            </div>
7109        </div><div class="artist-card" data-artist-id="noah-stein" style="cursor:pointer">
7110            <div class="artist-image-wrapper">
7111                <img src="https://media.echovira.com/echoes/echoes_noah_stein_handpan_artist_portrait_0.png" alt="Noah Stein" class="artist-image"
7112                srcset="https://media.echovira.com/echoes/echoes_noah_stein_handpan_artist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_noah_stein_handpan_artist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_noah_stein_handpan_artist_portrait_0-full.webp 1024w"
7113                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7114                <div class="artist-overlay">
7115                    <div class="artist-stage-name">Noah</div>
7116                    <div class="artist-instrument">Handpan Artist</div>
7117                    <div class="artist-real-name">Noah Stein • 24</div>
7118                </div>
7119            </div>
7120        </div><div class="artist-card" data-artist-id="nova-reed" style="cursor:pointer">
7121            <div class="artist-image-wrapper">
7122                <img src="https://media.echovira.com/echoes/echoes_nova_reed_electric_guitarist_portrait_0.png" alt="Nova Reed" class="artist-image"
7123                srcset="https://media.echovira.com/echoes/echoes_nova_reed_electric_guitarist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_nova_reed_electric_guitarist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_nova_reed_electric_guitarist_portrait_0-full.webp 1024w"
7124                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7125                <div class="artist-overlay">
7126                    <div class="artist-stage-name">Nova</div>
7127                    <div class="artist-instrument">Electric Guitarist</div>
7128                    <div class="artist-real-name">Nova Reed • 24</div>
7129                </div>
7130            </div>
7131        </div><div class="artist-card" data-artist-id="rayan-kapoor" style="cursor:pointer">
7132            <div class="artist-image-wrapper">
7133                <img src="https://media.echovira.com/echoes/echoes_rayan_kapoor_sitarist_portrait_0.png" alt="Rayan Kapoor" class="artist-image"
7134                srcset="https://media.echovira.com/echoes/echoes_rayan_kapoor_sitarist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_rayan_kapoor_sitarist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_rayan_kapoor_sitarist_portrait_0-full.
7134webp 1024w"
7135                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7136                <div class="artist-overlay">
7137                    <div class="artist-stage-name">Rayan</div>
7138                    <div class="artist-instrument">Sitarist</div>
7139                    <div class="artist-real-name">Rayan Kapoor • 25</div>
7140                </div>
7141            </div>
7142        </div><div class="artist-card" data-artist-id="selma-rahim" style="cursor:pointer">
7143            <div class="artist-image-wrapper">
7144                <img src="https://media.echovira.com/echoes/echoes_selma_rahim_qanun_player_portrait_0.png" alt="Selma Rahim" class="artist-image"
7145                srcset="https://media.echovira.com/echoes/echoes_selma_rahim_qanun_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_selma_rahim_qanun_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_selma_rahim_qanun_player_portrait_0-full.webp 1024w"
7146                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7147                <div class="artist-overlay">
7148                    <div class="artist-stage-name">Selma</div>
7149                    <div class="artist-instrument">Qanun Player</div>
7150                    <div class="artist-real-name">Selma Rahim • 23</div>
7151                </div>
7152            </div>
7153        </div><div class="artist-card" data-artist-id="siena-moretti" style="cursor:pointer">
7154            <div class="artist-image-wrapper">
7155                <img src="https://media.echovira.com/echoes/echoes_siena_moretti_harpist_portrait_0.png" alt="Siena Moretti" class="artist-image"
7156                srcset="https://media.echovira.com/echoes/echoes_siena_moretti_harpist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_siena_moretti_harpist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_siena_moretti_harpist_portrait_0-full.webp 1024w"
7157                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7158                <div class="artist-overlay">
7159                    <div class="artist-stage-name">Siena</div>
7160                    <div class="artist-instrument">Harpist</div>
7161                    <div class="artist-real-name">Siena Moretti • 23</div>
7162                </div>
7163            </div>
7164        </div><div class="artist-card" data-artist-id="sophia-lane" style="cursor:pointer">
7165            <div class="artist-image-wrapper">
7166                <img src="https://media.echovira.com/echoes/echoes_sophia_lane_trumpeter_portrait_0.png" alt="Sophia Lane" class="artist-image"
7167                srcset="https://media.echovira.com/echoes/echoes_sophia_lane_trumpeter_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_sophia_lane_trumpeter_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_sophia_lane_trumpeter_portrait_0-full.webp 1024w"
7168                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7169                <div class="artist-overlay">
7170                    <div class="artist-stage-name">Sophia</div>
7171                    <div class="artist-instrument">Trumpeter</div>
7172                    <div class="artist-real-name">Sophia Lane • 24</div>
7173                </div>
7174            </div>
7175        </div><div class="artist-card" data-artist-id="yara-dervan" style="cursor:pointer">
7176            <div class="artist-image-wrapper">
7177                <img src="https://media.echovira.com/echoes/echoes_yara_dervan_ney_flute_player_portrait_0.png" alt="Yara Dervan" class="artist-image"
7178                srcset="https://media.echovira.com/echoes/echoes_yara_dervan_ney_flute_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_yara_dervan_ney_flute_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_yara_dervan_ney_flute_player_portrait_0-full.webp 1024w"
7179                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
7180                <div class="artist-overlay">
7181                    <div class="artist-stage-name">Yara</div>
7182                    <div class="artist-instrument">Ney Flute Player</div>
7183                    <div class="artist-real-name">Yara Dervan • 24</div>
7184                </div>
7185            </div>
7186        </div>
7187</div>
7188    </div>
7189</section>
7190
7191<section class="section section-light" id="music">
7192    <div class="container">
7193        <h2 class="section-title">Latest Releases</h2>
7194        <div class="content-grid" id="musicGrid">
7195            <div class="content-card">
7196                <div class="content-image">♪</div>
7197                <div class="content-info">
7198                    <h3 class="content-title">
7198Echoes Debut Album</h3>
7199                    <p class="content-description">Experience our cinematic instrumental journey featuring all 32 artists</p>
7200                    <a href="https://www.youtube.com/@EchoesMusicBand" target="_blank" class="content-link">Listen Now</a>
7201                </div>
7202            </div>
7203        </div>
7204    </div>
7205</section>
7206
7207<section class="section" id="videos">
7208    <div class="container">
7209        <h2 class="section-title">Videos</h2>
7210        <div class="content-grid" id="videosGrid">
7211            <div class="content-card">
7212                <div class="content-image">▶</div>
7213                <div class="content-info">
7214                    <h3 class="content-title">Live Performances</h3>
7215                    <p class="content-description">Watch Echoes perform live with all instruments in harmony</p>
7216                    <a href="https://www.youtube.com/@EchoesMusicBand" target="_blank" class="content-link">Watch on YouTube</a>
7217                </div>
7218            </div>
7219            <div class="content-card">
7220                <div class="content-image">🎬</div>
7221                <div class="content-info">
7222                    <h3 class="content-title">Behind The Scenes</h3>
7223                    <p class="content-description">Explore our creative process and meet the artists</p>
7224                    <a href="https://www.tiktok.com/@echoesmusicband" target="_blank" class="content-link">Watch on TikTok</a>
7225                </div>
7226            </div>
7227        </div>
7228    </div>
7229</section>
7230
7231<section class="section section-light" id="news">
7232    <div class="container">
7233        <h2 class="section-title">Latest News</h2>
7234        <div class="content-grid" id="newsGrid">
7235            <div class="content-card">
7236                <div class="content-image">📰</div>
7237                <div class="content-info">
7238                    <h3 class="content-title">Welcome to Echoes</h3>
7239                    <p class="content-description">Follow our journey as we create instrumental music that transcends borders</p>
7240                    <a href="https://www.instagram.com/echoesmusicband/" target="_blank" class="content-link">Follow on Instagram</a>
7241                </div>
7242            </div>
7243            <div class="content-card">
7244                <div class="content-image">🎼</div>
7245                <div class="content-info">
7246                    <h3 class="content-title">Meet The Composers</h3>
7247                    <p class="content-description">Discover the creative minds behind our cinematic scores</p>
7248                    <a href="https://facebook.com/echoesintrumental" target="_blank" class="content-link">Visit Our Page</a>
7249                </div>
7250            </div>
7251            <div class="content-card">
7252                <div class="content-image">🎵</div>
7253                <div class="content-info">
7254                    <h3 class="content-title">New Music Coming</h3>
7255                    <p class="content-description">Subscribe to hear our latest instrumental compositions first</p>
7256                    <a href="https://www.youtube.com/@EchoesMusicBand" target="_blank" class="content-link">Subscribe Now</a>
7257                </div>
7258            </div>
7259        </div>
7260    </div>
7261</section>
7262
7263<footer class="main-footer">
7264    <div class="container">
7265        <div class="social-links">
7266            <a href="https://www.youtube.com/@EchoesMusicBand" target="_blank" class="social-link">▶</a>
7267            <a href="https://www.instagram.com/echoesmusicband/" target="_blank" class="social-link">📷</a>
7268            <a href="https://www.tiktok.com/@echoesmusicband" target="_blank" class="social-link">🎵</a>
7269            <a href="https://facebook.com/echoesintrumental" target="_blank" class="social-link">👥</a>
7270        </div>
7271        <p class="footer-text">&copy; 2025 Echoes. All Rights Reserved.</p>
7272    </div>
7273</footer>
7274
7275
7276
7277
7278<div id="bioPages">
7279<div id="bio-adrian-cole" class="bio-page">
7280            <div class="bio-header">
7281                <div class="container">
7282                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7283                </div>
7284            </div>
7285            
7286            <div class="bio-content">
7287                <div class="bio-card">
7288                    <div class="bio-image-section">
7289                        <img src="https://media.echovira.com/echoes/echoes_adrian_cole_saxophonist_portrait_0.png" alt="Adrian Cole" class="bio-artist-image"
7290                srcset="https://media.echovira.com/echoes/echoes_adrian_cole_saxophonist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_adrian_cole_saxophonist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_adrian_cole_saxophonist_portrait_0-full.
7290webp 1024w"
7291                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7292                    </div>
7293                    <div class="bio-text-section">
7294                        <div class="bio-artist-title">
7295                            <h1>Adrian Cole</h1>
7296                            <div class="stage-name">"Adrian" • 27 years</div>
7297                            <div class="instrument">Saxophonist</div>
7298                        </div>
7299                        <div class="bio-description">
7300                            <p>Adrian (Adrian Cole), 27 — the saxophonist of Echoes, a magnetic performer who blends jazz phrasing with modern fusion textures.</p><p>His warm, flexible tone and precise articulation give melodies a clear voice, while his rhythmic feel pushes the groove into new territories live. His phrasing and dynamic choices shape arrangements and drive the band's onstage momentum.</p><p>As Echoes' saxophonist he favors lyrical improvisation, punchy articulation, a rich midrange tone, tight pocket playing, and recurring riffs that anchor solos and hooks.</p>
7301                        </div>
7302                    </div>
7303                </div>
7304            </div>
7305        </div>
7306<div id="bio-akira-sato" class="bio-page">
7307            <div class="bio-header">
7308                <div class="container">
7309                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7310                </div>
7311            </div>
7312            
7313            <div class="bio-content">
7314                <div class="bio-card">
7315                    <div class="bio-image-section">
7316                        <img src="https://media.echovira.com/echoes/echoes_akira_sato_shakuhachi_player_portrait_0.png" alt="Akira Sato" class="bio-artist-image"
7317                srcset="https://media.echovira.com/echoes/echoes_akira_sato_shakuhachi_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_akira_sato_shakuhachi_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_akira_sato_shakuhachi_player_portrait_0-full.webp 1024w"
7318                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7319                    </div>
7320                    <div class="bio-text-section">
7321                        <div class="bio-artist-title">
7322                            <h1>Akira Sato</h1>
7323                            <div class="stage-name">"Akira" • 25 years</div>
7324                            <div class="instrument">Shakuhachi Player</div>
7325                        </div>
7326                        <div class="bio-description">
7327                            <p>Akira Sato — Akira, 25, the shakuhachi player of Echoes. A meditative shakuhachi voice carried on a haunting breath, simple and affecting.</p><p>Akira's lines thread through Echoes' arrangements, giving the band a vertical, breathing counterpoint that anchors melodies and space. Their presence shifts the live energy from dense grooves to spacious, contemplative moments that draw the crowd in.</p><p>As a shakuhachi instrumentalist they blend refined breath control, nuanced articulation, and spontaneous improvisation into signature phrases that recur like motifs across songs.</p>
7328                        </div>
7329                    </div>
7330                </div>
7331            </div>
7332        </div>
7333<div id="bio-amira-kouyate" class="bio-page">
7334            <div class="bio-header">
7335                <div class="container">
7336                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7337                </div>
7338            </div>
7339            
7340            <div class="bio-content">
7341                <div class="bio-card">
7342                    <div class="bio-image-section">
7343                        <img src="https://media.echovira.com/echoes/echoes_amira_kouyate_djembe_player_portrait_0.png" alt="Amira Kouyate" class="bio-artist-image"
7344                srcset="https://media.echovira.com/echoes/echoes_amira_kouyate_djembe_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_amira_kouyate_djembe_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_amira_kouyate_djembe_player_portrait_0-full.
7344webp 1024w"
7345                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7346                    </div>
7347                    <div class="bio-text-section">
7348                        <div class="bio-artist-title">
7349                            <h1>Amira Kouyate</h1>
7350                            <div class="stage-name">"Amira" • 23 years</div>
7351                            <div class="instrument">Djembe Player</div>
7352                        </div>
7353                        <div class="bio-description">
7354                            <p>Amira Kouyate (stage name: Amira) joins Echoes as djembe player. At 23, she already helps drive the band's rhythm and live momentum.</p><p>Her playing marries explosive energy with fine nuance: a djembe pulse that both propels the groove and adds delicate color. On recordings and on stage her touch shapes arrangements, fills, and the band's dynamic arc.</p><p>As Echoes' djembe player Amira sets the pocket, lifts crescendos, and tightens transitions so every song breathes. Technically she blends crisp slap, rounded bass tones, precise articulation, and confident improvisation—those signature motifs anchor the sound.</p>
7355                        </div>
7356                    </div>
7357                </div>
7358            </div>
7359        </div>
7360<div id="bio-anaya-sen" class="bio-page">
7361            <div class="bio-header">
7362                <div class="container">
7363                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7364                </div>
7365            </div>
7366            
7367            <div class="bio-content">
7368                <div class="bio-card">
7369                    <div class="bio-image-section">
7370                        <img src="https://media.echovira.com/echoes/echoes_anaya_sen_tabla_player_portrait_0.png" alt="Anaya Sen" class="bio-artist-image"
7371                srcset="https://media.echovira.com/echoes/echoes_anaya_sen_tabla_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_anaya_sen_tabla_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_anaya_sen_tabla_player_portrait_0-full.webp 1024w"
7372                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7373                    </div>
7374                    <div class="bio-text-section">
7375                        <div class="bio-artist-title">
7376                            <h1>Anaya Sen</h1>
7377                            <div class="stage-name">"Anaya" • 23 years</div>
7378                            <div class="instrument">Tabla Player</div>
7379                        </div>
7380                        <div class="bio-description">
7381                            <p>Anaya (Anaya Sen), 23 — the tabla player of Echoes. She crafts intricate tabla rhythms with architectural precision.</p><p>Her technique blends crisp dayan articulation, warm bayan tone, and an elastic groove that fuels improvisation and signature rhythmic phrases. On record and live, Anaya's patterns lock the band into shifting grooves, shaping dynamics and call-and-response moments that heighten arrangements.</p><p>As Echoes' rhythmic architect, she outlines transitions, accents, and pockets that give the group its pulse and live drive.</p>
7382                        </div>
7383                    </div>
7384                </div>
7385            </div>
7386        </div>
7387<div id="bio-aria-shad" class="bio-page">
7388            <div class="bio-header">
7389                <div class="container">
7390                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7391                </div>
7392            </div>
7393            
7394            <div class="bio-content">
7395                <div class="bio-card">
7396                    <div class="bio-image-section">
7397                        <img src="https://media.echovira.com/echoes/echoes_aria_shad_santur_player_portrait_0.png" alt="Aria Shad" class="bio-artist-image"
7398                srcset="https://media.echovira.com/echoes/echoes_aria_shad_santur_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_aria_shad_santur_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_aria_shad_santur_player_portrait_0-full.
7398webp 1024w"
7399                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7400                    </div>
7401                    <div class="bio-text-section">
7402                        <div class="bio-artist-title">
7403                            <h1>Aria Shad</h1>
7404                            <div class="stage-name">"Aria" • 24 years</div>
7405                            <div class="instrument">Santur Player</div>
7406                        </div>
7407                        <div class="bio-description">
7408                            <p>Meet Aria Shad — Aria, 24, the Persian santur virtuoso whose magical hands shape Echoes' instrumental sound. Her shimmering cascades and precise phrasing bring ancient timbres into modern landscapes, weaving the heart of our music.</p><p>Aria is a Persian santur virtuoso whose playing weaves shimmering cascades of melody. Her technique blends delicate hammer articulations with a clear, bell-like tone and nimble improvisation that often becomes the band's recurring motif. As Echoes' santur player, Aria transforms motifs into textures that lift arrangements from backdrop to lead.</p><p>Her grooves and phrasing add a distinct rhythmic pocket, lifting arrangements and giving live shows a luminous, conversational energy. As the santur voice in Echoes, she shapes both texture and dynamics—bridging traditional timbres with the band's contemporary sound.</p><p>New recordings showcase her technique, dynamics and emotional storytelling — radiant solos and haunting motifs that define our Persian-influenced world music fusion. Aria's santur mastery represents ancient Middle Eastern tradition meeting contemporary instrumental innovation.</p>
7409                        </div>
7410                    </div>
7411                </div>
7412            </div>
7413        </div>
7414<div id="bio-arjun-rai" class="bio-page">
7415            <div class="bio-header">
7416                <div class="container">
7417                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7418                </div>
7419            </div>
7420            
7421            <div class="bio-content">
7422                <div class="bio-card">
7423                    <div class="bio-image-section">
7424                        <img src="https://media.echovira.com/echoes/echoes_arjun_rai_sarangi_player_portrait_0.png" alt="Arjun Rai" class="bio-artist-image"
7425                srcset="https://media.echovira.com/echoes/echoes_arjun_rai_sarangi_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_arjun_rai_sarangi_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_arjun_rai_sarangi_player_portrait_0-full.webp 1024w"
7426                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7427                    </div>
7428                    <div class="bio-text-section">
7429                        <div class="bio-artist-title">
7430                            <h1>Arjun Rai</h1>
7431                            <div class="stage-name">"Arjun" • 27 years</div>
7432                            <div class="instrument">Sarangi Player</div>
7433                        </div>
7434                        <div class="bio-description">
7435                            <p>Meet Arjun Rai — stage name Arjun — the 27-year-old sarangi player of Echoes, whose magical hands shape the band's signature sound. A master of tone, bowing finesse and raga-infused phrasing, Arjun brings an emotive, instrumental voice that turns every melody into a story.</p><p>Arjun is a soulful sarangi storyteller, shaping melodies with bowed phrasing and vocal expressiveness. His sarangi lines add warmth, depth and haunting melodies that lift Echoes' arrangements from ambient backdrop to the heart of the piece.</p><p>As Echoes' sarangi instrumentalist, Arjun's technique blends precise bow control, warm sympathetic resonance, and a lyrical touch that answers the vocals. His improvisations and hallmark motifs create call-and-response lines that the band locks into, adding melodic pockets the songs revolve around.</p><p>Expect intimate solos, lush textures and unexpected fusions in upcoming releases and live sessions. On record and on stage his tone and articulation broaden Echoes' sonic palette—bringing both intimate warmth and high-energy peaks that lift the live mix. Arjun's sarangi playing represents Indian classical string tradition meeting contemporary world fusion.</p>
7436                        </div>
7437                    </div>
7438                </div>
7439            </div>
7440        </div>
7441<div id="bio-charlotte-dupont" class="bio-page">
7442            <div class="bio-header">
7443                <div class="container">
7444                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7445                </div>
7446            </div>
7447            
7448            <div class="bio-content">
7449                <div class="bio-card">
7450                    <div class="bio-image-section">
7451                        <img src="https://media.echovira.com/echoes/echoes_charlotte_dupont_composer_portrait_0.png" alt="Charlotte Dupont" class="bio-artist-image"
7452                srcset="https://media.echovira.com/echoes/echoes_charlotte_dupont_composer_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_charlotte_dupont_composer_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_charlotte_dupont_composer_portrait_0-full.
7452webp 1024w"
7453                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7454                    </div>
7455                    <div class="bio-text-section">
7456                        <div class="bio-artist-title">
7457                            <h1>Charlotte Dupont</h1>
7458                            <div class="stage-name">"Charlotte" • 25 years</div>
7459                            <div class="instrument">Composer</div>
7460                        </div>
7461                        <div class="bio-description">
7462                            <p>Meet Charlotte Dupont — Charlotte, the 25-year-old composer behind Echoes, crafting cinematic, cross-cultural instrumental scores. Her writing blends melodic clarity with textural depth, shaping the band's atmospheric sound and turning simple motifs into sweeping emotional journeys.</p><p>Charlotte is an international composer who crafts cinematic, cross-cultural scores. With a disciplined process that starts at the piano and grows through field recordings, synth layers and string arrangements, Charlotte composes with intention and imagination.</p><p>Her writing blends memorable melodies with rich harmonic textures, deliberate structural choices, and recurring motifs that develop across a piece. She favors signature progressions that give each song a clear emotional spine. Her scores are the heartbeat of Echoes, giving our music its cinematic sweep and intimate moments alike.</p><p>As Echoes' composer she directs arrangements, transitions, and pacing so songs unfold like scenes, which brings cinematic swells and focused live energy. New pieces highlight her craft — expect lush crescendos, delicate motifs, and cross-cultural colors in our upcoming release. Charlotte represents the future of contemporary classical composition, film scoring, and ambient music production.</p>
7463                        </div>
7464                    </div>
7465                </div>
7466            </div>
7467        </div>
7468<div id="bio-clara-voss" class="bio-page">
7469            <div class="bio-header">
7470                <div class="container">
7471                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7472                </div>
7473            </div>
7474            
7475            <div class="bio-content">
7476                <div class="bio-card">
7477                    <div class="bio-image-section">
7478                        <img src="https://media.echovira.com/echoes/echoes_clara_voss_violinist_portrait_0.png" alt="Clara Voss" class="bio-artist-image"
7479                srcset="https://media.echovira.com/echoes/echoes_clara_voss_violinist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_clara_voss_violinist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_clara_voss_violinist_portrait_0-full.webp 1024w"
7480                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7481                    </div>
7482                    <div class="bio-text-section">
7483                        <div class="bio-artist-title">
7484                            <h1>Clara Voss</h1>
7485                            <div class="stage-name">"Clara" • 24 years</div>
7486                            <div class="instrument">Violinist</div>
7487                        </div>
7488                        <div class="bio-description">
7489                            <p>Meet Clara (Clara Voss), 24 — the violinist of Echoes, whose magical hands bring our sound to life. An instrumentalist with flawless technique and deeply expressive phrasing, Clara's mastery turns every bow stroke into a story.</p><p>Clara is an expressive soloist whose precise technique and fiery intensity shape every phrase. Her rich, cinematic lines and fiery solos weave through Echoes' textures, lifting our songs from backdrop to the heartbeat of the band.</p><p>Her tone moves from glassy, singing highs to warm, gritty lower lines, and her articulation and improvisational runs are a recurring thread in songs. In the studio she crafts hallmark riffs and detailed dynamics that lift arrangements without overpowering them.</p><p>Onstage Clara's phrasing and rhythmic feel push the band into tighter grooves and bigger moments, turning quiet passages into breath-held suspense and choruses into cathartic release. Expect soaring melodies and intimate moments in new releases.</p><p>Clara's violin playing represents classical virtuosity meeting modern instrumental fusion, showcasing technical precision combined with emotional depth in every Echoes composition.</p>
7490                        </div>
7491                    </div>
7492                </div>
7493            </div>
7494        </div>
7495<div id="bio-dev-mehra" class="bio-page">
7496            <div class="bio-header">
7497                <div class="container">
7498                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7499                </div>
7500            </div>
7501            
7502            <div class="bio-content">
7503                <div class="bio-card">
7504                    <div class="bio-image-section">
7505                        <img src="https://media.echovira.com/echoes/echoes_dev_mehra_bansuri_player_portrait_0.png" alt="Dev Mehra" class="bio-artist-image"
7506                srcset="https://media.echovira.com/echoes/echoes_dev_mehra_bansuri_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_dev_mehra_bansuri_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_dev_mehra_bansuri_player_portrait_0-full.
7506webp 1024w"
7507                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7508                    </div>
7509                    <div class="bio-text-section">
7510                        <div class="bio-artist-title">
7511                            <h1>Dev Mehra</h1>
7512                            <div class="stage-name">"Dev" • 24 years</div>
7513                            <div class="instrument">Bansuri Player</div>
7514                        </div>
7515                        <div class="bio-description">
7516                            <p>Dev Mehra, Echoes' bansuri voice. At 24, he's a bansuri melodist with a restrained, mystical touch.</p><p>Dev's breath control and microtonal phrasing create warm, shifting tones; his articulation and nimble ornamentation are often the motifs listeners hum after a set. His hallmark phrases — a soft, sliding cadence or a bright staccato riff — recur across arrangements as a connective thread.</p><p>Onstage he weaves counter-melodies and spontaneous lines that push songs into open space, turning quiet passages into live peaks.</p>
7517                        </div>
7518                    </div>
7519                </div>
7520            </div>
7521        </div>
7522<div id="bio-diego-navarro" class="bio-page">
7523            <div class="bio-header">
7524                <div class="container">
7525                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7526                </div>
7527            </div>
7528            
7529            <div class="bio-content">
7530                <div class="bio-card">
7531                    <div class="bio-image-section">
7532                        <img src="https://media.echovira.com/echoes/echoes_diego_navarro_bandoneyn_player_portrait_0.png" alt="Diego Navarro" class="bio-artist-image"
7533                srcset="https://media.echovira.com/echoes/echoes_diego_navarro_bandoneyn_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_diego_navarro_bandoneyn_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_diego_navarro_bandoneyn_player_portrait_0-full.webp 1024w"
7534                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7535                    </div>
7536                    <div class="bio-text-section">
7537                        <div class="bio-artist-title">
7538                            <h1>Diego Navarro</h1>
7539                            <div class="stage-name">"Diego" • 25 years</div>
7540                            <div class="instrument">Bandone\xf3n Player</div>
7541                        </div>
7542                        <div class="bio-description">
7543                            <p>Diego Navarro — Diego, 25, bandone\xf3n voice in Echoes. He plays with a tango heart and cinematic melancholy that colors every phrase.</p><p>As bandone\xf3n instrumentalist he shapes tone with subtle bellows control, crisp articulation, and a warm, reedy timbre. His pocketed grooves and responsive improvisation bring hallmark riffs that anchor both quiet passages and climactic swells.</p><p>On stage his phrasing favors breath-like dynamics and cinematic pacing, giving songs an intimate yet expansive feel.</p>
7544                        </div>
7545                    </div>
7546                </div>
7547            </div>
7548        </div>
7549<div id="bio-eleanor-graves" class="bio-page">
7550            <div class="bio-header">
7551                <div class="container">
7552                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7553                </div>
7554            </div>
7555            
7556            <div class="bio-content">
7557                <div class="bio-card">
7558                    <div class="bio-image-section">
7559                        <img src="https://media.echovira.com/echoes/echoes_eleanor_graves_composer_portrait_0.png" alt="Eleanor Graves" class="bio-artist-image"
7560                srcset="https://media.echovira.com/echoes/echoes_eleanor_graves_composer_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_eleanor_graves_composer_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_eleanor_graves_composer_portrait_0-full.
7560webp 1024w"
7561                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7562                    </div>
7563                    <div class="bio-text-section">
7564                        <div class="bio-artist-title">
7565                            <h1>Eleanor Graves</h1>
7566                            <div class="stage-name">"Eleanor" • 26 years</div>
7567                            <div class="instrument">Composer</div>
7568                        </div>
7569                        <div class="bio-description">
7570                            <p>Eleanor Graves — Eleanor, 26, Composer of Echoes. An international composer who crafts cinematic, cross-cultural scores.</p><p>At 26, Eleanor shapes Echoes' sound through careful melody craft, motif development, and signature harmonic progressions. Her arrangement choices and structural pacing give the band's recordings clarity and the live sets forward momentum.</p><p>She favors modal interchange and recurring motifs to build emotional through-lines, balancing dense textures with open spaces so each instrument breathes.</p>
7571                        </div>
7572                    </div>
7573                </div>
7574            </div>
7575        </div>
7576<div id="bio-elena-solis" class="bio-page">
7577            <div class="bio-header">
7578                <div class="container">
7579                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7580                </div>
7581            </div>
7582            
7583            <div class="bio-content">
7584                <div class="bio-card">
7585                    <div class="bio-image-section">
7586                        <img src="https://media.echovira.com/echoes/echoes_elena_solis_crystal_singing_bowls_player_portrait_0.png" alt="Elena Solis" class="bio-artist-image"
7587                srcset="https://media.echovira.com/echoes/echoes_elena_solis_crystal_singing_bowls_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_elena_solis_crystal_singing_bowls_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_elena_solis_crystal_singing_bowls_player_portrait_0-full.webp 1024w"
7588                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7589                    </div>
7590                    <div class="bio-text-section">
7591                        <div class="bio-artist-title">
7592                            <h1>Elena Solis</h1>
7593                            <div class="stage-name">"Elena" • 25 years</div>
7594                            <div class="instrument">Crystal Singing Bowls Player</div>
7595                        </div>
7596                        <div class="bio-description">
7597                            <p>Elena Solis, 25, Crystal Singing Bowls player. Her bowls weave soothing, otherworldly harmonics that shape Echoes' sound.</p><p>Her sustained tones anchor melodies and expand the band's live dynamics, pulling audiences into meditative swells. On stage she uses precise striking and subtle modulation to blend with guitars and vocals, turning transitions into immersive moments.</p><p>Her technique favors pure, long sustain, delicate articulation, and improvisational motifs that become Echoes' hallmark.</p>
7598                        </div>
7599                    </div>
7600                </div>
7601            </div>
7602        </div>
7603<div id="bio-elise-laurent" class="bio-page">
7604            <div class="bio-header">
7605                <div class="container">
7606                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7607                </div>
7608            </div>
7609            
7610            <div class="bio-content">
7611                <div class="bio-card">
7612                    <div class="bio-image-section">
7613                        <img src="https://media.echovira.com/echoes/echoes_elise_laurent_cellist_portrait_1.png" alt="Elise Laurent" class="bio-artist-image"
7614                srcset="https://media.echovira.com/echoes/echoes_elise_laurent_cellist_portrait_1-400.webp 400w, https://media.echovira.com/echoes/echoes_elise_laurent_cellist_portrait_1-800.webp 800w, https://media.echovira.com/echoes/echoes_elise_laurent_cellist_portrait_1-full.
7614webp 1024w"
7615                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7616                    </div>
7617                    <div class="bio-text-section">
7618                        <div class="bio-artist-title">
7619                            <h1>Elise Laurent</h1>
7620                            <div class="stage-name">"Elise" • 25 years</div>
7621                            <div class="instrument">Cellist</div>
7622                        </div>
7623                        <div class="bio-description">
7624                            <p>Elise Laurent — Elise, 25, cellist in Echoes. Her playing is a moody, cinematic cello anchor.</p><p>On record she weaves low, sustained lines and tense counter-melodies that give songs a shadowy spine. Live, her bowwork and dynamic swells lift quiet moments into cinematic peaks and push climaxes into visceral release.</p><p>As cellist, Elise's focused tone, precise articulation, and rhythmic pocket combine tight bow technique with subtle improvisation and memorable low-register riffs that anchor and propel grooves.</p>
7625                        </div>
7626                    </div>
7627                </div>
7628            </div>
7629        </div>
7630<div id="bio-hana-sakamura" class="bio-page">
7631            <div class="bio-header">
7632                <div class="container">
7633                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7634                </div>
7635            </div>
7636            
7637            <div class="bio-content">
7638                <div class="bio-card">
7639                    <div class="bio-image-section">
7640                        <img src="https://media.echovira.com/echoes/echoes_hana_sakamura_composer_portrait_0.png" alt="Hana Sakamura" class="bio-artist-image"
7641                srcset="https://media.echovira.com/echoes/echoes_hana_sakamura_composer_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_hana_sakamura_composer_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_hana_sakamura_composer_portrait_0-full.webp 1024w"
7642                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7643                    </div>
7644                    <div class="bio-text-section">
7645                        <div class="bio-artist-title">
7646                            <h1>Hana Sakamura</h1>
7647                            <div class="stage-name">"Hana" • 24 years</div>
7648                            <div class="instrument">Composer</div>
7649                        </div>
7650                        <div class="bio-description">
7651                            <p>Hana Sakamura — Hana, 24, Composer of Echoes. An international composer crafting cinematic, cross-cultural scores.</p><p>Her arrangements shape Echoes' sound, translating orchestral textures into tight band dynamics and fueling the group's live energy. In performance her charts guide dynamic shifts, dramatic transitions and moments where the band stretches motifs into evocative peaks.</p><p>As composer she builds memorable melodies, layered harmonic palettes and concise structures, developing motifs and signature progressions that recur and transform across tracks.</p>
7652                        </div>
7653                    </div>
7654                </div>
7655            </div>
7656        </div>
7657<div id="bio-haruto-aki" class="bio-page">
7658            <div class="bio-header">
7659                <div class="container">
7660                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7661                </div>
7662            </div>
7663            
7664            <div class="bio-content">
7665                <div class="bio-card">
7666                    <div class="bio-image-section">
7667                        <img src="https://media.echovira.com/echoes/echoes_haruto_aki_shamisen_player_portrait_0.png" alt="Haruto Aki" class="bio-artist-image"
7668                srcset="https://media.echovira.com/echoes/echoes_haruto_aki_shamisen_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_haruto_aki_shamisen_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_haruto_aki_shamisen_player_portrait_0-full.
7668webp 1024w"
7669                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7670                    </div>
7671                    <div class="bio-text-section">
7672                        <div class="bio-artist-title">
7673                            <h1>Haruto Aki</h1>
7674                            <div class="stage-name">"Haruto" • 26 years</div>
7675                            <div class="instrument">Shamisen Player</div>
7676                        </div>
7677                        <div class="bio-description">
7678                            <p>Haruto Aki — Haruto, 26, the shamisen player of Echoes. A striking shamisen performer whose bold attack cuts through the mix and drives the band.</p><p>As an instrumentalist he favors crisp articulation, aggressive pick strokes, and a dense, slightly raw tone. His improvisational lines and signature riffs create call-and-response hooks and anchor the rhythmic pulse.</p><p>On record Haruto's voicing choices and phrasing give Echoes a contrast between traditional timbre and modern drive. Live, his attack and dynamic moves lift the set's intensity and tighten the band's grooves.</p>
7679                        </div>
7680                    </div>
7681                </div>
7682            </div>
7683        </div>
7684<div id="bio-isabella-romero" class="bio-page">
7685            <div class="bio-header">
7686                <div class="container">
7687                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7688                </div>
7689            </div>
7690            
7691            <div class="bio-content">
7692                <div class="bio-card">
7693                    <div class="bio-image-section">
7694                        <img src="https://media.echovira.com/echoes/echoes_isabella_romero_composer_portrait_0.png" alt="Isabella Romero" class="bio-artist-image"
7695                srcset="https://media.echovira.com/echoes/echoes_isabella_romero_composer_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_isabella_romero_composer_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_isabella_romero_composer_portrait_0-full.webp 1024w"
7696                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7697                    </div>
7698                    <div class="bio-text-section">
7699                        <div class="bio-artist-title">
7700                            <h1>Isabella Romero</h1>
7701                            <div class="stage-name">"Isabella" • 27 years</div>
7702                            <div class="instrument">Composer</div>
7703                        </div>
7704                        <div class="bio-description">
7705                            <p>Isabella Romero, 27, Composer of Echoes. An international composer who crafts cinematic, cross-cultural scores.</p><p>As Echoes' composer, Isabella develops concise, memorable motifs and signature progressions that give each song a clear identity. Her harmonic choices and arrangement decisions shape the band's textures and the emotional arc of live sets, turning quiet passages into sweeping crescendos.</p><p>On stage her structures leave room for dynamic contrast and improvisation, letting instrumentalists breathe and the collective energy respond in real time.</p>
7706                        </div>
7707                    </div>
7708                </div>
7709            </div>
7710        </div>
7711<div id="bio-isla-hart" class="bio-page">
7712            <div class="bio-header">
7713                <div class="container">
7714                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7715                </div>
7716            </div>
7717            
7718            <div class="bio-content">
7719                <div class="bio-card">
7720                    <div class="bio-image-section">
7721                        <img src="https://media.echovira.com/echoes/echoes_isla_hart_pianist_portrait_0.png" alt="Isla Hart" class="bio-artist-image"
7722                srcset="https://media.echovira.com/echoes/echoes_isla_hart_pianist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_isla_hart_pianist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_isla_hart_pianist_portrait_0-full.
7722webp 1024w"
7723                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7724                    </div>
7725                    <div class="bio-text-section">
7726                        <div class="bio-artist-title">
7727                            <h1>Isla Hart</h1>
7728                            <div class="stage-name">"Isla" • 23 years</div>
7729                            <div class="instrument">Pianist</div>
7730                        </div>
7731                        <div class="bio-description">
7732                            <p>Isla Hart — Isla, 23, Echoes' pianist. A pianist with cinematic sensibility and a luminous touch.</p><p>Her piano weaves the band's harmonic core, turning ambient textures into defined motifs and guiding dynamic shifts. Her technique balances clear articulation, warm tone, rhythmic precision, and tasteful improvisation, with recurring arpeggiated motifs that anchor arrangements.</p><p>On stage her playing expands the live energy, moving songs from intimate moments to anthemic peaks with subtle voicings and fluid transitions.</p>
7733                        </div>
7734                    </div>
7735                </div>
7736            </div>
7737        </div>
7738<div id="bio-jinae-park" class="bio-page">
7739            <div class="bio-header">
7740                <div class="container">
7741                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7742                </div>
7743            </div>
7744            
7745            <div class="bio-content">
7746                <div class="bio-card">
7747                    <div class="bio-image-section">
7748                        <img src="https://media.echovira.com/echoes/echoes_jinae_park_gayageum_player_portrait_0.png" alt="Jinae Park" class="bio-artist-image"
7749                srcset="https://media.echovira.com/echoes/echoes_jinae_park_gayageum_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_jinae_park_gayageum_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_jinae_park_gayageum_player_portrait_0-full.webp 1024w"
7750                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7751                    </div>
7752                    <div class="bio-text-section">
7753                        <div class="bio-artist-title">
7754                            <h1>Jinae Park</h1>
7755                            <div class="stage-name">"Jinae" • 23 years</div>
7756                            <div class="instrument">Gayageum Player</div>
7757                        </div>
7758                        <div class="bio-description">
7759                            <p>Jinae Park, 23 — gayageum player of Echoes. She balances delicacy and power on the instrument.</p><p>Her artistry is that of an elegant gayageum stylist who blends delicate ornament with grounded force. Her technique favors clear plucked articulation, warm resonant tone, a subtle rhythmic pocket, and confident improvisational turns that often center on a signature descending motif.</p><p>In Echoes, Jinae's lines tie traditional timbre to the band's textures, turning simple motifs into emotional anchors. On stage she shapes arrangements between intimate hushes and powerful surges.</p>
7760                        </div>
7761                    </div>
7762                </div>
7763            </div>
7764        </div>
7765<div id="bio-kwame-diallo" class="bio-page">
7766            <div class="bio-header">
7767                <div class="container">
7768                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7769                </div>
7770            </div>
7771            
7772            <div class="bio-content">
7773                <div class="bio-card">
7774                    <div class="bio-image-section">
7775                        <img src="https://media.echovira.com/echoes/echoes_kwame_diallo_kora_player_portrait_0.png" alt="Kwame Diallo" class="bio-artist-image"
7776                srcset="https://media.echovira.com/echoes/echoes_kwame_diallo_kora_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_kwame_diallo_kora_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_kwame_diallo_kora_player_portrait_0-full.
7776webp 1024w"
7777                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7778                    </div>
7779                    <div class="bio-text-section">
7780                        <div class="bio-artist-title">
7781                            <h1>Kwame Diallo</h1>
7782                            <div class="stage-name">"Kwame" • 26 years</div>
7783                            <div class="instrument">Kora Player</div>
7784                        </div>
7785                        <div class="bio-description">
7786                            <p>Kwame Diallo, 26, Echoes' kora player. He shapes luminous kora griot-style narratives with plucked clarity and patient storytelling.</p><p>In Echoes he anchors the band's harmonic map, weaving rhythmic counterpoint that lifts both quiet moments and full-band crescendos. As a kora instrumentalist, his technique blends crisp, bell-like tone, deft finger articulation, a conversational pocket, and improvisational runs that recur as memorable riffs.</p><p>As a composer he favors singable motifs, clear harmonic pathways, and arrangements that let the kora thread motifs through the ensemble.</p>
7787                        </div>
7788                    </div>
7789                </div>
7790            </div>
7791        </div>
7792<div id="bio-lian-zhou" class="bio-page">
7793            <div class="bio-header">
7794                <div class="container">
7795                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7796                </div>
7797            </div>
7798            
7799            <div class="bio-content">
7800                <div class="bio-card">
7801                    <div class="bio-image-section">
7802                        <img src="https://media.echovira.com/echoes/echoes_lian_zhou_erhu_player_portrait_0.png" alt="Lian Zhou" class="bio-artist-image"
7803                srcset="https://media.echovira.com/echoes/echoes_lian_zhou_erhu_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_lian_zhou_erhu_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_lian_zhou_erhu_player_portrait_0-full.webp 1024w"
7804                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7805                    </div>
7806                    <div class="bio-text-section">
7807                        <div class="bio-artist-title">
7808                            <h1>Lian Zhou</h1>
7809                            <div class="stage-name">"Lian" • 24 years</div>
7810                            <div class="instrument">Erhu Player</div>
7811                        </div>
7812                        <div class="bio-description">
7813                            <p>Lian Zhou, 24 — the erhu voice of Echoes. A deeply emotive erhu soloist who makes each bowed phrase feel like a conversation.</p><p>As Echoes' erhu player, Lian shapes the band's core—her bowing supplies lyrical counter-melodies, sustained tones, and sudden dynamic accents that push arrangements forward. Her technique blends precise left-hand articulation with a warm, singing tone, favoring open-string drones and nuanced vibrato.</p><p>Onstage she improvises with conversational phrasing and recurring motifs that become the band's hallmark riffs, lifting quiet passages into charged crescendos.</p>
7814                        </div>
7815                    </div>
7816                </div>
7817            </div>
7818        </div>
7819<div id="bio-lina-darwish" class="bio-page">
7820            <div class="bio-header">
7821                <div class="container">
7822                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7823                </div>
7824            </div>
7825            
7826            <div class="bio-content">
7827                <div class="bio-card">
7828                    <div class="bio-image-section">
7829                        <img src="https://media.echovira.com/echoes/echoes_lina_darwish_oud_player_portrait_0.png" alt="Lina Darwish" class="bio-artist-image"
7830                srcset="https://media.echovira.com/echoes/echoes_lina_darwish_oud_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_lina_darwish_oud_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_lina_darwish_oud_player_portrait_0-full.
7830webp 1024w"
7831                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7832                    </div>
7833                    <div class="bio-text-section">
7834                        <div class="bio-artist-title">
7835                            <h1>Lina Darwish</h1>
7836                            <div class="stage-name">"Lina" • 26 years</div>
7837                            <div class="instrument">Oud Player</div>
7838                        </div>
7839                        <div class="bio-description">
7840                            <p>Lina Darwish, 26 — the oud player of Echoes, blending heritage with a modern pulse.</p><p>A soulful oud storyteller, she connects traditional maqam phrasing with contemporary grooves to create warm, narrative melodies. In the band, Lina anchors Echoes' harmonic heart: her reed-like tone and rhythmic fills shape the group's colors and emotional arc.</p><p>On stage her phrasing lifts arrangements and drives live energy, turning quiet passages into intimate exchanges and crescendos into communal release.</p>
7841                        </div>
7842                    </div>
7843                </div>
7844            </div>
7845        </div>
7846<div id="bio-lucia-navarro" class="bio-page">
7847            <div class="bio-header">
7848                <div class="container">
7849                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7850                </div>
7851            </div>
7852            
7853            <div class="bio-content">
7854                <div class="bio-card">
7855                    <div class="bio-image-section">
7856                        <img src="https://media.echovira.com/echoes/echoes_lucia_navarro_classical_guitarist_portrait_0.png" alt="Lucia Navarro" class="bio-artist-image"
7857                srcset="https://media.echovira.com/echoes/echoes_lucia_navarro_classical_guitarist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_lucia_navarro_classical_guitarist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_lucia_navarro_classical_guitarist_portrait_0-full.webp 1024w"
7858                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7859                    </div>
7860                    <div class="bio-text-section">
7861                        <div class="bio-artist-title">
7862                            <h1>Lucia Navarro</h1>
7863                            <div class="stage-name">"Luc\xeda" • 25 years</div>
7864                            <div class="instrument">Classical Guitarist</div>
7865                        </div>
7866                        <div class="bio-description">
7867                            <p>Lucia Navarro, 25 — the Classical Guitarist of Echoes. A flamenco-rooted classical guitarist with a modern flair.</p><p>As an instrumentalist on classical guitar she brings precise right-hand technique, warm, singing tone, rhythmic drive, crisp articulation, and tasteful improvisation that surfaces in the band's hallmark riffs.</p><p>Those elements reshape Echoes' arrangements, adding intimate melodic threads and a percussive pulse that lift both studio tracks and live sets.</p>
7868                        </div>
7869                    </div>
7870                </div>
7871            </div>
7872        </div>
7873<div id="bio-luiza-mendes" class="bio-page">
7874            <div class="bio-header">
7875                <div class="container">
7876                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7877                </div>
7878            </div>
7879            
7880            <div class="bio-content">
7881                <div class="bio-card">
7882                    <div class="bio-image-section">
7883                        <img src="https://media.echovira.com/echoes/echoes_luiza_mendes_percussionist_portrait_0.png" alt="Luiza Mendes" class="bio-artist-image"
7884                srcset="https://media.echovira.com/echoes/echoes_luiza_mendes_percussionist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_luiza_mendes_percussionist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_luiza_mendes_percussionist_portrait_0-full.
7884webp 1024w"
7885                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7886                    </div>
7887                    <div class="bio-text-section">
7888                        <div class="bio-artist-title">
7889                            <h1>Luiza Mendes</h1>
7890                            <div class="stage-name">"Luiza" • 24 years</div>
7891                            <div class="instrument">Percussionist</div>
7892                        </div>
7893                        <div class="bio-description">
7894                            <p>Luiza Mendes, 24 — Echoes' percussionist and rhythmic engine.</p><p>She drives high-energy, forceful percussion rooted in global rhythms, giving each song propulsive momentum and cross-cultural color. Her tight pocket, crisp articulation, and dynamic fills anchor Echoes' grooves and invite improvisation.</p><p>On record and live, Luiza's patterns shape song dynamics and elevate crowd energy, turning transitions into climactic moments.</p>
7895                        </div>
7896                    </div>
7897                </div>
7898            </div>
7899        </div>
7900<div id="bio-mara-vogel" class="bio-page">
7901            <div class="bio-header">
7902                <div class="container">
7903                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7904                </div>
7905            </div>
7906            
7907            <div class="bio-content">
7908                <div class="bio-card">
7909                    <div class="bio-image-section">
7910                        <img src="https://media.echovira.com/echoes/echoes_mara_vogel_composer_portrait_0.png" alt="Mara Vogel" class="bio-artist-image"
7911                srcset="https://media.echovira.com/echoes/echoes_mara_vogel_composer_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_mara_vogel_composer_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_mara_vogel_composer_portrait_0-full.webp 1024w"
7912                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7913                    </div>
7914                    <div class="bio-text-section">
7915                        <div class="bio-artist-title">
7916                            <h1>Mara Vogel</h1>
7917                            <div class="stage-name">"Mara" • 23 years</div>
7918                            <div class="instrument">Composer</div>
7919                        </div>
7920                        <div class="bio-description">
7921                            <p>Mara Vogel, 23, composer of Echoes. An international composer who crafts cinematic, cross-cultural scores.</p><p>Mara's melodies favor clear, memorable motifs while her harmonic language and signature progressions build emotional arcs and cohesive arrangements. In the studio she shapes structure and motif development; live, her arrangements drive the band's dynamics and the ebb and flow of energy on stage.</p><p>Her voicings and transitions give Echoes their cinematic lift and narrative momentum.</p>
7922                        </div>
7923                    </div>
7924                </div>
7925            </div>
7926        </div>
7927<div id="bio-mei-lian" class="bio-page">
7928            <div class="bio-header">
7929                <div class="container">
7930                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7931                </div>
7932            </div>
7933            
7934            <div class="bio-content">
7935                <div class="bio-card">
7936                    <div class="bio-image-section">
7937                        <img src="https://media.echovira.com/echoes/echoes_mei_lian_guqin_player_portrait_0.png" alt="Mei Lian" class="bio-artist-image"
7938                srcset="https://media.echovira.com/echoes/echoes_mei_lian_guqin_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_mei_lian_guqin_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_mei_lian_guqin_player_portrait_0-full.webp 1024w"
7939                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7940                    </div>
7941                    <div class="bio-text-section">
7942                        <div class="bio-artist-title">
7943                            <h1>Mei Lian</h1>
7944                            <div class="stage-name">"Mei" • 24 years</div>
7945                            <div class="instrument">Guqin Player</div>
7946                        </div>
7947                        <div class="bio-description">
7948                            <p>Mei Lian, 24, the guqin player joining Echoes. A serene guqin artist whose zen-like minimalism shapes every phrase.</p><p>Her plucked tones and delicate articulation add spaciousness and a meditative pulse to Echoes, guiding songs from hush to release onstage. Her playing reshapes arrangements, creating space for vocal lines and electronic textures to breathe.</p><p>As a guqin instrumentalist she favors refined finger technique, subtle pitch bending, and improvisational motifs that recur as signature phrases.</p>
7949                        </div>
7950                    </div>
7951                </div>
7952            </div>
7953        </div>
7954<div id="bio-noah-stein" class="bio-page">
7955            <div class="bio-header">
7956                <div class="container">
7957                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7958                </div>
7959            </div>
7960            
7961            <div class="bio-content">
7962                <div class="bio-card">
7963                    <div class="bio-image-section">
7964                        <img src="https://media.echovira.com/echoes/echoes_noah_stein_handpan_artist_portrait_0.png" alt="Noah Stein" class="bio-artist-image"
7965                srcset="https://media.echovira.com/echoes/echoes_noah_stein_handpan_artist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_noah_stein_handpan_artist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_noah_stein_handpan_artist_portrait_0-full.
7965webp 1024w"
7966                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7967                    </div>
7968                    <div class="bio-text-section">
7969                        <div class="bio-artist-title">
7970                            <h1>Noah Stein</h1>
7971                            <div class="stage-name">"Noah" • 24 years</div>
7972                            <div class="instrument">Handpan Artist</div>
7973                        </div>
7974                        <div class="bio-description">
7975                            <p>Noah Stein, 24, the handpan artist joining Echoes. His playing weaves cosmic handpan atmospheres crafted for focused meditation.</p><p>As Echoes' handpan instrumentalist he anchors arrangements with warm, bell-like tones, fluid articulation, and improvisations that reshape each groove. As a composer he designs recurring motifs and open harmonic progressions that give the band space to breathe and build.</p><p>On stage Noah's parts color dynamics, creating lifts and intimate interludes that change the room's focus.</p>
7976                        </div>
7977                    </div>
7978                </div>
7979            </div>
7980        </div>
7981<div id="bio-nova-reed" class="bio-page">
7982            <div class="bio-header">
7983                <div class="container">
7984                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
7985                </div>
7986            </div>
7987            
7988            <div class="bio-content">
7989                <div class="bio-card">
7990                    <div class="bio-image-section">
7991                        <img src="https://media.echovira.com/echoes/echoes_nova_reed_electric_guitarist_portrait_0.png" alt="Nova Reed" class="bio-artist-image"
7992                srcset="https://media.echovira.com/echoes/echoes_nova_reed_electric_guitarist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_nova_reed_electric_guitarist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_nova_reed_electric_guitarist_portrait_0-full.webp 1024w"
7993                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
7994                    </div>
7995                    <div class="bio-text-section">
7996                        <div class="bio-artist-title">
7997                            <h1>Nova Reed</h1>
7998                            <div class="stage-name">"Nova" • 24 years</div>
7999                            <div class="instrument">Electric Guitarist</div>
8000                        </div>
8001                        <div class="bio-description">
8002                            <p>Nova Reed, 24 — Electric guitarist of Echoes.</p><p>Nova plays as a bold, modern electric guitarist who layers crisp leads with ambient-rock textures to build atmosphere without losing momentum. Her playing shapes Echoes' sonic identity: sculpted tones and rhythmic drive that push songs from introspective moments to full-band peaks.</p><p>As an instrumentalist she favors articulate phrasing, textured delay and dynamic control, with improvisational runs that turn into memorable, recurring riffs.</p>
8003                        </div>
8004                    </div>
8005                </div>
8006            </div>
8007        </div>
8008<div id="bio-rayan-kapoor" class="bio-page">
8009            <div class="bio-header">
8010                <div class="container">
8011                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
8012                </div>
8013            </div>
8014            
8015            <div class="bio-content">
8016                <div class="bio-card">
8017                    <div class="bio-image-section">
8018                        <img src="https://media.echovira.com/echoes/echoes_rayan_kapoor_sitarist_portrait_0.png" alt="Rayan Kapoor" class="bio-artist-image"
8019                srcset="https://media.echovira.com/echoes/echoes_rayan_kapoor_sitarist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_rayan_kapoor_sitarist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_rayan_kapoor_sitarist_portrait_0-full.
8019webp 1024w"
8020                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
8021                    </div>
8022                    <div class="bio-text-section">
8023                        <div class="bio-artist-title">
8024                            <h1>Rayan Kapoor</h1>
8025                            <div class="stage-name">"Rayan" • 25 years</div>
8026                            <div class="instrument">Sitarist</div>
8027                        </div>
8028                        <div class="bio-description">
8029                            <p>Rayan Kapoor, 25, the sitarist of Echoes. A meditative sitar voice that blends raga phrasing with contemporary colors.</p><p>As Echoes' sitarist, Rayan shapes the band's sonic palette with bright sympathetic resonance, fluid meend, and rhythmic phrasing that lift arrangements. Their technique favors open-string drones, precise articulation, and improvisational motifs that grow into the group's signature riffs.</p><p>On stage, Rayan's dynamic swells and timing guide crescendos and create space for the band, turning instrumental passages into high-energy moments that connect with the crowd.</p>
8030                        </div>
8031                    </div>
8032                </div>
8033            </div>
8034        </div>
8035<div id="bio-selma-rahim" class="bio-page">
8036            <div class="bio-header">
8037                <div class="container">
8038                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
8039                </div>
8040            </div>
8041            
8042            <div class="bio-content">
8043                <div class="bio-card">
8044                    <div class="bio-image-section">
8045                        <img src="https://media.echovira.com/echoes/echoes_selma_rahim_qanun_player_portrait_0.png" alt="Selma Rahim" class="bio-artist-image"
8046                srcset="https://media.echovira.com/echoes/echoes_selma_rahim_qanun_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_selma_rahim_qanun_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_selma_rahim_qanun_player_portrait_0-full.webp 1024w"
8047                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
8048                    </div>
8049                    <div class="bio-text-section">
8050                        <div class="bio-artist-title">
8051                            <h1>Selma Rahim</h1>
8052                            <div class="stage-name">"Selma" • 23 years</div>
8053                            <div class="instrument">Qanun Player</div>
8054                        </div>
8055                        <div class="bio-description">
8056                            <p>Selma Rahim — Selma, 23, qanun voice at Echoes. A delicate yet commanding qanun soloist.</p><p>Her technique blends crisp right-hand articulation with a warm sustaining tone and fluid improvisation. She threads modal motifs and quick ornamentation into the band's arrangements, creating both intimacy and forward drive.</p><p>On stage her phrasing and signature arpeggio figures lift grooves and give songs a distinct melodic anchor.</p>
8057                        </div>
8058                    </div>
8059                </div>
8060            </div>
8061        </div>
8062<div id="bio-siena-moretti" class="bio-page">
8063            <div class="bio-header">
8064                <div class="container">
8065                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
8066                </div>
8067            </div>
8068            
8069            <div class="bio-content">
8070                <div class="bio-card">
8071                    <div class="bio-image-section">
8072                        <img src="https://media.echovira.com/echoes/echoes_siena_moretti_harpist_portrait_0.png" alt="Siena Moretti" class="bio-artist-image"
8073                srcset="https://media.echovira.com/echoes/echoes_siena_moretti_harpist_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_siena_moretti_harpist_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_siena_moretti_harpist_portrait_0-full.webp 1024w"
8074                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
8075                    </div>
8076                    <div class="bio-text-section">
8077                        <div class="bio-artist-title">
8078                            <h1>Siena Moretti</h1>
8079                            <div class="stage-name">"Siena" • 23 years</div>
8080                            <div class="instrument">Harpist</div>
8081                        </div>
8082                        <div class="bio-description">
8083                            <p>Siena Moretti — Siena, 23, the harpist of Echoes. An ethereal harp soloist whose dreamlike tone weaves luminous textures.</p><p>Her harp lines add spaciousness and shimmer, shaping Echoes' sonic palette and giving recordings a resonant center. Live, those parts lift the energy into intimate, cinematic moments where small motifs swell into the room.</p><p>On stage, Siena uses precise finger technique, fluid arpeggios, and delicate articulation to balance written motifs with spontaneous improvisation.</p>
8084                        </div>
8085                    </div>
8086                </div>
8087            </div>
8088        </div>
8089<div id="bio-sophia-lane" class="bio-page">
8090            <div class="bio-header">
8091                <div class="container">
8092                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
8093                </div>
8094            </div>
8095            
8096            <div class="bio-content">
8097                <div class="bio-card">
8098                    <div class="bio-image-section">
8099                        <img src="https://media.echovira.com/echoes/echoes_sophia_lane_trumpeter_portrait_0.png" alt="Sophia Lane" class="bio-artist-image"
8100                srcset="https://media.echovira.com/echoes/echoes_sophia_lane_trumpeter_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_sophia_lane_trumpeter_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_sophia_lane_trumpeter_portrait_0-full.
8100webp 1024w"
8101                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
8102                    </div>
8103                    <div class="bio-text-section">
8104                        <div class="bio-artist-title">
8105                            <h1>Sophia Lane</h1>
8106                            <div class="stage-name">"Sophia" • 24 years</div>
8107                            <div class="instrument">Trumpeter</div>
8108                        </div>
8109                        <div class="bio-description">
8110                            <p>Sophia Lane, 24 — the trumpeter of Echoes. Luminous solos and a stage presence that shapes every performance.</p><p>She's a radiant trumpet soloist whose tone and presence anchor the band's sound. On stage Sophia balances warm tone, crisp articulation and a deep sense of groove.</p><p>Her improvisations favor clear motifs and memorable riffs that become live highlights. That trumpet voice reshapes arrangements and pushes the band's energy from quiet moments to climaxes.</p>
8111                        </div>
8112                    </div>
8113                </div>
8114            </div>
8115        </div>
8116<div id="bio-yara-dervan" class="bio-page">
8117            <div class="bio-header">
8118                <div class="container">
8119                    <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
8120                </div>
8121            </div>
8122            
8123            <div class="bio-content">
8124                <div class="bio-card">
8125                    <div class="bio-image-section">
8126                        <img src="https://media.echovira.com/echoes/echoes_yara_dervan_ney_flute_player_portrait_0.png" alt="Yara Dervan" class="bio-artist-image"
8127                srcset="https://media.echovira.com/echoes/echoes_yara_dervan_ney_flute_player_portrait_0-400.webp 400w, https://media.echovira.com/echoes/echoes_yara_dervan_ney_flute_player_portrait_0-800.webp 800w, https://media.echovira.com/echoes/echoes_yara_dervan_ney_flute_player_portrait_0-full.webp 1024w"
8128                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
8129                    </div>
8130                    <div class="bio-text-section">
8131                        <div class="bio-artist-title">
8132                            <h1>Yara Dervan</h1>
8133                            <div class="stage-name">"Yara" • 24 years</div>
8134                            <div class="instrument">Ney Flute Player</div>
8135                        </div>
8136                        <div class="bio-description">
8137                            <p>Yara Dervan — Yara, 24, Ney flute player in Echoes. Her ney sings with a breathy, mystical timbre that carries quiet spiritual depth.</p><p>As Echoes' ney player she shapes melodies with a warm, airy tone and precise microtonal ornamentation. Her improvisations favor lyrical motifs and delicate articulation that become recurring, memorable phrases.</p><p>On record and on stage, her lines thread through arrangements, softening edges and lifting crescendos into luminous space.</p>
8138                        </div>
8139                    </div>
8140                </div>
8141            </div>
8142        </div>
8143</div>
8144<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
8145  <nav aria-label="Site pages">
8146    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
8147    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
8148    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
8149    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
8150  </nav>
8151  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
8152</footer>
8153`;e.s(["EchoesEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=(0,t.injectFluidCanvas)(a,"#7030c0","#0d1117",.28);function s(e){a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e
8153=>{e.style.display="none"});let i=document.getElementById("bio-"+e);i&&(i.classList.add("active"),window.scrollTo(0,0))}function r(){a.querySelectorAll(".bio-page").forEach(e=>e.classList.remove("active")),a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display=""}),window.scrollTo(0,0)}function n(e){let a=e.target,i=a.closest("[data-artist-id]");if(i){e.preventDefault(),s(i.dataset.artistId);return}if(a.closest('[data-action="back"]')){e.preventDefault(),r();return}}window.showArtistBio=s,window.hideBioPage=r,window.showMainPage=r;let o=document.getElementById("mobileToggle"),l=document.getElementById("navMenu");o&&l&&o.addEventListener("click",()=>l.classList.toggle("active"));let c=()=>document.getElementById("mainNav")?.classList.toggle("scrolled",window.scrollY>100);return a.addEventListener("click",n),window.addEventListener("scroll",c),()=>{i(),a.removeEventListener("click",n),window.removeEventListener("scroll",c),delete window.showArtistBio,delete window.hideBioPage,delete window.showMainPage}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,className:"echovira-page-root",dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(n)},suppressHydrationWarning:!0}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},790550,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(601048),s=e.i(920206);let r="https://media.echovira.com",n=[{slug:"amanecer",name:"Amanecer",lang:"Spanish",native:"",url:"https://amanecer.echovira.com",artBg:"linear-gradient(145deg,#0d0805,#1a1008,#0d0805)",desc:"Latin indie and Spanish pop rooted in Iberian musical tradition."},{slug:"bahira",name:"Bahira",lang:"Arabic",native:"بهيرة",url:"https://bahira.echovira.com",artBg:"linear-gradient(145deg,#3a1a06,#6b2d0a,#3a1a06)",desc:"Arabic music bridging Middle Eastern tradition with contemporary sound."},{slug:"byeolbit",name:"Byeolbit",lang:"Korean",native:"별빛",url:"https://byeolbit.echovira.com",artBg:"linear-gradient(145deg,#0a1640,#142660,#0a1640)",desc:"Korean contemporary — K-indie, K-pop, and alternative."},{slug:"cortica",name:"Cortica",lang:"Portuguese",native:"Cortiça",url:"https://cortica.echovira.com",artBg:"linear-gradient(145deg,#050f08,#0a1e10,#050f08)",desc:"Portuguese indie rock 
8153with fado roots and Mediterranean warmth."},{slug:"echoes",name:"Echoes",lang:"Instrumental",native:"",url:"https://echoes.echovira.com",artBg:"linear-gradient(145deg,#080808,#141414,#080808)",desc:"32-piece instrumental collective — world music beyond language."},{slug:"frekans",name:"Frekans",lang:"Turkish",native:"",url:"https://frekans.echovira.com",artBg:"linear-gradient(145deg,#0c0808,#1c100a,#0c0808)",desc:"Turkish alternative rock fusing Anatolian energy with modern sound."},{slug:"hich",name:"Hich",lang:"Farsi",native:"هیچ",url:"https://hich.echovira.com",artBg:"linear-gradient(145deg,#1a0630,#300a52,#1a0630)",desc:"Persian music for the soul — tradition meeting tomorrow."},{slug:"luoxi",name:"Luoxi",lang:"Chinese",native:"落曦",url:"https://luoxi.echovira.com",artBg:"linear-gradient(145deg,#080d14,#0f1a28,#080d14)",desc:"Chinese indie merging classical instruments with modern alt."},{slug:"miroir",name:"Miroir",lang:"French",native:"",url:"https://miroir.echovira.com",artBg:"linear-gradient(145deg,#0a0a0e,#14141e,#0a0a0e)",desc:"French indie-pop — chanson française meets contemporary production."},{slug:"morvina",name:"Morvina",lang:"Russian",native:"Морвина",url:"https://morvina.echovira.com",artBg:"linear-gradient(145deg,#280810,#4a0e1a,#280810)",desc:"Russian alternative rock with deep Slavic emotion and intensity."},{slug:"pulseborn",name:"Pulseborn",lang:"English",native:"",url:"https://pulseborn.echovira.com",artBg:"linear-gradient(145deg,#060610,#0e0e20,#060610)",desc:"American youth music — raw energy, real stories, anthemic choruses."},{slug:"syahi",name:"Syahi",lang:"Hindi",native:"स्याही",url:"https://syahi.echovira.com",artBg:"linear-gradient(145deg,#0e0a06,#1e1408,#0e0a06)",desc:"South Asian music — Hindi fusion where rhythm meets its roots."}],o=[...n,...n].map(e=>`<a class="ev-mq-item" href="${e.url}" target="_blank" rel="noopener noreferrer"><img src="${r}/echovira/${e.slug}_logo.png" alt="${e.name}" loading="lazy"><span>${e.name}</span></a><span class="ev-mq-sep"></span>`).join(""),l={bahira:"rgba(180,83,9,.28)",byeolbit:"rgba(99,102,241,.28)",hich:"rgba(124,58,237,.28)"},c=[n[1],n[2],n[6]].map(e=>`
8154      <a class="ev-acard ev-reveal" href="${e.url}" target="_blank" rel="noopener noreferrer" style="background:${e.artBg}${l[e.slug]?";--acard-glow:"+l[e.slug]:""}">
8155        <div class="ev-acard-dots"></div>
8156        <div class="ev-acard-glow"></div>
8157        <div class="ev-acard-overlay"></div>
8158        <div class="ev-acard-body">
8159          <div class="ev-acard-lang">${e.lang}</div>
8160          <div class="ev-acard-title">${e.name}${e.native?'<br><span style="font-size:.7em;font-style:normal;color:rgba(255,255,255,.36)">'+e.native+"</span>":""}</div>
8161          <div class="ev-acard-meta">${e.desc}</div>
8162        </div>
8163      </a>`).join(""),d=n.map(e=>`
8164      <a class="ev-lcard ev-reveal" href="${e.url}" target="_blank" rel="noopener noreferrer" style="background:${e.artBg.replace("145deg","135deg")}">
8165        <div class="ev-lcard-img" style="background:transparent">
8166          <div class="ev-lcard-img-inner">
8167            <img class="ev-lcard-logo-img" src="${r}/echovira/${e.slug}_logo.png" alt="${e.name}" loading="lazy">
8168          </div>
8169        </div>
8170        <div class="ev-lcard-body">
8171          <div class="ev-lcard-row">
8172            <img class="ev-lcard-logo" src="${r}/echovira/${e.slug}_logo.png" alt="${e.name}" loading="lazy">
8173            <div><div class="ev-lcard-name">${e.name}${e.native?' <span style="font-weight:400;color:rgba(255,255,255,.28);font-size:.72rem">'+e.native+"</span>":""}</div></div>
8174          </div>
8175          <span class="ev-tag">${e.lang}</span>
8176          <div class="ev-lcard-desc">${e.desc}</div>
8177        </div>
8178      </a>`).join(""),h=`<style>
8179:root { --ev-bg: #020208; --ev-fg: #ffffff; }
8180/* \u2500 Reset & base \u2500 */
8181#ev-wrap,#ev-wrap *{box-sizing:border-box;margin:0;padding:0}
8182#ev-wrap{
8183  --bar-h:38px;
8184  font-family:-apple-system,BlinkMacSystemFont,'Inter','Segoe UI',sans-serif;
8185  background:var(--ev-bg);color:var(--ev-fg);line-height:1.6;overflow-x:hidden;
8186  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
8187  --muted:rgba(255,255,255,.52);
8188  --dim:rgba(255,255,255,.26);
8189  --border:rgba(255,255,255,.07);
8190  --bh:rgba(255,255,255,.14);
8191  --surface:rgba(255,255,255,.04);
8192  --glass:rgba(255,255,255,.035);
8193  --radius:18px;
8194  --ease:cubic-bezier(.4,0,.2,1);
8195  --ease-spring:cubic-bezier(.34,1.56,.64,1);
8196}
8197/* Grain texture overlay */
8198#ev-wrap::before{
8199  content:'';position:fixed;inset:0;pointer-events:none;z-index:9999;
8200  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
8201  background-size:160px 160px;mix-blend-mode:overlay;opacity:.028;
8202}
8203
8204/* \u2500 Nav \u2500 */
8205.ev-nav{
8206  position:fixed;top:0;left:0;right:0;z-index:500;
8207  height:58px;padding:0 32px;
8208  display:flex;align-items:center;justify-content:space-between;
8209  background:color-mix(in srgb, var(--ev-bg) 70%, transparent);
8210  backdrop-filter:blur(28px) saturate(1.6);-webkit-backdrop-filter:blur(28px) saturate(1.6);
8211  border-bottom:1px solid var(--border);
8212  transition:background .4s,border-color .4s;
8213}
8214.ev-nav-logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:#fff;flex-shrink:0}
8215.ev-logo-mark{width:22px;height:22px;display:grid;grid-template-columns:1fr 1fr;gap:3px}
8216.ev-logo-mark span{background:#fff;border-radius:3px;display:block}
8217.ev-logo-text{font-size:.96rem;font-weight:600;letter-spacing:-.01em;font-family:Georgia,'Times New Roman',serif;font-style:italic}
8218.ev-nav-links{display:flex;align-items:center;gap:0}
8219.ev-nav-links a{font-size:.81rem;font-weight:500;color:var(--muted);text-decoration:none;padding:6px 11px;border-radius:8px;transition:color .2s,background .2s;white-space:nowrap}
8220.ev-nav-links a:hover{color:#fff;background:rgba(255,255,255,.055)}
8221.ev-nav-badge{display:inline-block;background:#14532d;color:#4ade80;font-size:.58rem;font-weight:700;padding:1px 6px;border-radius:100px;letter-spacing:.04em;margin-left:4px;vertical-align:middle}
8222
8223/* Store dropdown */
8224.ev-store-wrap{position:relative;display:inline-block}
8225.ev-store-wrap>a{display:flex;align-items:center;gap:4px;font-size:.81rem;font-weight:500;color:var(--muted);text-decoration:none;padding:6px 11px;border-radius:8px;transition:color .2s,background .2s;white-space:nowrap;cursor:pointer}
8226.ev-store-wrap:hover>a,.ev-store-wrap:focus-within>a{color:#fff;background:rgba(255,255,255,.055)}
8227.ev-store-dd{
8228  position:absolute;top:calc(100% + 10px);left:50%;transform:translateX(-50%) translateY(-6px);
8229  width:220px;padding:8px;
8230  background:rgba(4,4,14,.96);
8231  backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);
8232  border:1px solid rgba(255,255,255,.09);border-radius:16px;
8233  box-shadow:0 4px 6px rgba(0,0,0,.3),0 20px 60px rgba(0,0,0,.7);
8234  opacity:0;pointer-events:none;
8235  transition:opacity .22s var(--ease),transform .22s var(--ease);
8236  z-index:600;
8237}
8238.ev-store-wrap:hover .ev-store-dd,.ev-store-wrap:focus-within .ev-store-dd{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0)}
8239.ev-store-dd-title{font-size:.62rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.22);padding:6px 12px 8px;}
8240.ev-store-dd a{display:block;padding:7px 12px;font-size:.8rem;color:rgba(255,255,255,.52);text-decoration:none;border-radius:9px;transition:background .15s,color .15s}
8241.ev-store-dd a:hover{background:rgba(255,255,255,.07);color:#fff}
8242.ev-store-dd-sep{height:1px;background:rgba(255,255,255,.06);margin:6px 0}
8243
8244.ev-nav-actions{display:flex;align-items:center;gap:8px}
8245.ev-btn-outline{padding:7px 14px;border:1px solid var(--border);border-radius:9px;font-size:.78rem;font-weight:500;color:var(--muted);text-decoration:none;transition:border-color .2s,color .2s,background .2s;white-space:nowrap}
8246.ev-btn-outline:hover{border-color:var(--bh);color:#fff;background:rgba(255,255,255,.04)}
8247.ev-btn-white{padding:7px 18px;border-radius:9px;background:#fff;color:#000;font-size:.8rem;font-weight:600;text-decoration:none;transition:opacity .2s,transform .15s;white-space:nowrap}
8248.ev-btn-white:hover{opacity:.87;transform:translateY(-1px)}
8249
8250/* \u2500 Hero \u2500 */
8251.ev-hero{
8252  min-height:110vh;position:relative;
8253  display:flex;flex-direction:column;align-items:center;justify-content:center;
8254  text-align:center;padding:120px 24px 120px;overflow:hidden;
8254background:#020208;
8255}
8256/* Dot-grid texture */
8257.ev-hero::before{
8258  content:'';position:absolute;inset:0;
8259  background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1px);
8260  background-size:26px 26px;
8261  pointer-events:none;z-index:0;
8262  mask-image:radial-gradient(ellipse 90% 90% at 50% 50%,#000 20%,transparent 72%);
8263  -webkit-mask-image:radial-gradient(ellipse 90% 90% at 50% 50%,#000 20%,transparent 72%);
8264}
8265/* Arc decorative lines — flora.ai-style depth */
8266.ev-hero-arcs{
8267  position:absolute;inset:0;pointer-events:none;z-index:0;
8268  overflow:hidden;
8269}
8270/* Ambient center glow */
8271@keyframes glow-breathe{
8272  0%,100%{transform:translate(-50%,-54%) scale(1);opacity:1}
8273  50%{transform:translate(-50%,-54%) scale(1.18);opacity:.72}
8274}
8275.ev-hero-glow{
8276  position:absolute;top:50%;left:50%;
8277  transform:translate(-50%,-54%);
8278  width:900px;height:900px;
8279  background:radial-gradient(ellipse at center,rgba(80,60,140,.065) 0%,rgba(255,255,255,.018) 30%,transparent 60%);
8280  pointer-events:none;z-index:0;
8281  animation:glow-breathe 9s ease-in-out infinite;
8282}
8283/* Floating image panels */
8284.ev-fi{
8285  position:absolute;pointer-events:none;z-index:2;
8286}
8287.ev-fi-meta{
8288  position:absolute;bottom:100%;left:0;padding-bottom:9px;
8289  font-size:.6rem;letter-spacing:.03em;color:rgba(255,255,255,.36);
8290  display:flex;align-items:center;gap:6px;white-space:nowrap;
8291}
8292.ev-fi-dot{opacity:.3}
8293.ev-fi-frame{
8294  border-radius:16px;overflow:hidden;
8295  box-shadow:0 2px 4px rgba(0,0,0,.4),0 12px 40px rgba(0,0,0,.75),0 30px 80px rgba(0,0,0,.9),0 0 0 1px rgba(255,255,255,.07);
8296  position:relative;
8297}
8298.ev-fi-frame::after{
8299  content:'';position:absolute;inset:0;
8300  background:linear-gradient(to bottom,rgba(255,255,255,.06) 0%,transparent 30%);
8301  pointer-events:none;z-index:1;border-radius:16px;
8302}
8303.ev-fi-frame img{width:100%;height:100%;object-fit:cover;display:block}
8304.ev-fi-1{width:268px;top:8%;left:2%;animation:flt1 8.5s ease-in-out infinite}
8305.ev-fi-2{width:228px;bottom:16%;left:3%;animation:flt2 11s ease-in-out infinite}
8306.ev-fi-3{width:284px;top:7%;right:2%;animation:flt3 9.5s ease-in-out infinite}
8307.ev-fi-4{width:244px;bottom:18%;right:2.5%;animation:flt1 12s ease-in-out infinite reverse}
8308.ev-fi-1 .ev-fi-frame{height:172px}
8309.ev-fi-2 .ev-fi-frame{height:146px}
8310.ev-fi-3 .ev-fi-frame{height:182px}
8311.ev-fi-4 .ev-fi-frame{height:156px}
8312@keyframes flt1{0%,100%{transform:rotate(-4deg) translateY(0)}50%{transform:rotate(-4deg) translateY(-18px)}}
8313@keyframes flt2{0%,100%{transform:rotate(3.5deg) translateY(0)}50%{transform:rotate(3.5deg) translateY(-22px)}}
8314@keyframes flt3{0%,100%{transform:rotate(5deg) translateY(0)}50%{transform:rotate(5deg) translateY(-14px)}}
8315
8316.ev-hero-vignette{
8317  position:absolute;inset:0;pointer-events:none;z-index:1;
8318  background:
8319    radial-gradient(ellipse 70% 65% at 50% 50%,transparent 0%,rgba(2,2,8,.58) 100%),
8320    linear-gradient(to bottom,rgba(2,2,8,.22) 0%,transparent 15%,transparent 85%,rgba(2,2,8,.36) 100%);
8321}
8322.ev-hero-content{position:relative;z-index:3;max-width:880px}
8323
8324.ev-pill{
8325  display:inline-flex;align-items:center;gap:9px;
8326  border:1px solid rgba(255,255,255,.09);border-radius:100px;
8327  padding:5px 18px 5px 6px;background:rgba(255,255,255,.03);
8328  font-size:.75rem;color:var(--muted);text-decoration:none;
8329  margin-bottom:40px;transition:border-color .2s,background .2s;
8330  backdrop-filter:blur(12px);
8331}
8332.ev-pill:hover{border-color:rgba(255,255,255,.18);background:rgba(255,255,255,.06)}
8333.ev-pill-badge{background:#14532d;color:#4ade80;border-radius:100px;padding:2px 10px;font-size:.62rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
8334.ev-pill-sep{width:1px;height:12px;background:rgba(255,255,255,.12)}
8335
8336/* Headline — flora.ai mix of serif + italic */
8337.ev-hero-h1{
8338  font-size:clamp(4rem,12vw,10rem);font-weight:700;
8339  letter-spacing:-.048em;line-height:.98;margin-bottom:30px;
8340  font-family:Georgia,'Times New Roman',serif;
8341}
8342.ev-hero-h1 .line1{display:block;color:#fff;text-shadow:0 0 80px rgba(255,255,255,.12),0 0 200px rgba(255,255,255,.05),0 2px 0 rgba(0,0,0,.6),0 4px 16px rgba(0,0,0,.5)}
8343.ev-cycle-wrap{display:block;position:relative;height:1.0em}
8344.ev-cycle-inner{display:contents}
8345.ev-cycle-inner span{
8346  position:absolute;inset:0;line-height:1.0;
8347  color:rgba(255,255,255,.38);
8348  font-style:italic;
8349  opacity:0;
8350  animation:wordFade 9s ease infinite;
8351}
8352.ev-cycle-inner span:nth-child(1){animation-delay:0s}
8353.ev-cycle-inner span:nth-child(2){animation-delay:3s}
8354.ev-cycle-inner span:nth-child(3){animation-delay:6s}
8355@keyframes wordFade{
8356  0%{opacity:0}
83564%{opacity:1}29%{opacity:1}33%{opacity:0}100%{opacity:0}
8357}
8358
8359.ev-hero-sub{
8360  font-size:clamp(1rem,1.9vw,1.14rem);color:rgba(255,255,255,.48);
8361  max-width:560px;margin:0 auto 44px;line-height:1.82;
8362  font-weight:400;letter-spacing:.005em;
8363}
8364.ev-hero-btns{display:flex;align-items:center;gap:10px;justify-content:center;flex-wrap:wrap}
8365.ev-btn-primary{
8366  display:inline-flex;align-items:center;gap:7px;padding:13px 28px;
8367  border-radius:10px;background:#fff;color:#000;font-size:.88rem;font-weight:600;
8368  text-decoration:none;transition:opacity .2s,transform .18s var(--ease-spring);
8369}
8370.ev-btn-primary:hover{opacity:.88;transform:translateY(-2px)}
8371.ev-btn-primary svg{transition:transform .2s}
8372.ev-btn-primary:hover svg{transform:translateX(2px)}
8373.ev-btn-shop{
8374  display:inline-flex;align-items:center;gap:7px;padding:13px 28px;
8375  border-radius:10px;border:1px solid rgba(255,255,255,.12);
8376  background:rgba(255,255,255,.05);color:rgba(255,255,255,.8);
8377  font-size:.88rem;font-weight:500;text-decoration:none;
8378  transition:border-color .2s,color .2s,background .2s,transform .18s;
8379  backdrop-filter:blur(8px);
8380}
8381.ev-btn-shop:hover{border-color:rgba(255,255,255,.22);color:#fff;background:rgba(255,255,255,.08);transform:translateY(-1px)}
8382.ev-btn-secondary{
8383  display:inline-flex;align-items:center;gap:7px;padding:13px 28px;
8384  border-radius:10px;border:1px solid var(--border);
8385  color:var(--muted);font-size:.88rem;font-weight:500;text-decoration:none;
8386  transition:border-color .2s,color .2s;
8387}
8388.ev-btn-secondary:hover{border-color:var(--bh);color:#fff}
8389
8390/* \u2500 Gradient fade divider \u2500 */
8391.ev-divider{
8392  height:1px;
8393  background:linear-gradient(to right,transparent 0%,rgba(255,255,255,.07) 15%,rgba(255,255,255,.07) 85%,transparent 100%);
8394}
8395
8396/* \u2500 Marquee \u2500 */
8397.ev-marquee-wrap{padding:72px 0 68px;overflow:hidden;
8397background:#020208}
8398.ev-marquee-label{text-align:center;font-size:.62rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--dim);margin-bottom:36px}
8399.ev-mq-fade{
8400  overflow:hidden;
8401  mask-image:linear-gradient(to right,transparent,#000 7%,#000 93%,transparent);
8402  -webkit-mask-image:linear-gradient(to right,transparent,#000 7%,#000 93%,transparent);
8403}
8404.ev-mq-track{display:flex;align-items:center;width:max-content;animation:mqRoll 40s linear infinite}
8405.ev-mq-track:hover{animation-play-state:paused}
8406@keyframes mqRoll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
8407/* .36 on the near-black #020208 marquee bg was 3.34:1, below AA's 4.5:1 — .6 clears it (~5.7:1) */
8408.ev-mq-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:0 36px;white-space:nowrap;text-decoration:none;color:rgba(255,255,255,.6);font-size:.72rem;font-weight:500;letter-spacing:.01em;transition:color .2s}
8409.ev-mq-item:hover{color:rgba(255,255,255,.75)}
8410.ev-mq-item img{width:42px;height:42px;object-fit:contain;border-radius:8px;filter:grayscale(1) brightness(.3);transition:filter .3s,transform .3s}
8411.ev-mq-item:hover img{filter:grayscale(0) brightness(.88);transform:scale(1.08)}
8412.ev-mq-sep{width:1px;height:52px;background:rgba(255,255,255,.07);flex-shrink:0}
8413
8414/* \u2500 Shared section typography \u2500 */
8415.ev-eyebrow{font-size:.62rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--dim);margin-bottom:18px}
8416.ev-h2{font-size:clamp(2.1rem,4.8vw,3.8rem);font-weight:700;letter-spacing:-.038em;line-height:1.06;margin-bottom:22px;font-family:Georgia,'Times New Roman',serif}
8417.ev-lead{font-size:1rem;color:rgba(255,255,255,.46);line-height:1.82;max-width:520px}
8418
8419/* \u2500 Services \u2500 */
8420.ev-svc-section{padding:160px 24px;
8420background:#020208}
8421.ev-svc-inner{max-width:1300px;margin:0 auto}
8422.ev-svc-hdr{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:72px;gap:40px;flex-wrap:wrap}
8423.ev-svc-hdr-left{max-width:600px}
8424.ev-svc-hdr-right{display:flex;align-items:center;gap:12px;flex-shrink:0}
8425.ev-link-btn{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;color:var(--muted);text-decoration:none;padding:8px 16px;border:1px solid var(--border);border-radius:9px;transition:border-color .2s,color .2s,background .2s}
8426.ev-link-btn:hover{color:#fff;border-color:var(--bh);background:rgba(255,255,255,.04)}
8427
8428/* Service card grid */
8429.ev-svc-grid{display:grid;grid-template-columns:1fr 1.1fr 1fr;grid-template-rows:420px 330px;gap:8px}
8430.ev-scard-mv    {grid-column:1/3;grid-row:1}
8431.ev-scard-shop  {grid-column:3;grid-row:1/3}
8432.ev-scard-img   {grid-column:1;grid-row:2}
8433.ev-scard-master{grid-column:2;grid-row:2}
8434
8435/* Card glass treatment */
8436.ev-scard{
8437  position:relative;border-radius:var(--radius);overflow:hidden;
8438  background:#07070f;cursor:pointer;text-decoration:none;color:#fff;
8439  display:block;
8440  border:1px solid rgba(255,255,255,.06);
8441  box-shadow:0 2px 4px rgba(0,0,0,.4),0 20px 60px rgba(0,0,0,.6);
8442  transition:transform .45s var(--ease),box-shadow .45s var(--ease),border-color .3s;
8443}
8444.ev-scard:hover{
8445  transform:scale(1.014);
8446  box-shadow:0 4px 8px rgba(0,0,0,.5),0 30px 80px rgba(0,0,0,.75),0 0 0 1px rgba(255,255,255,.1);
8447  border-color:rgba(255,255,255,.1);
8448}
8449/* Specular top line */
8450.ev-scard::before{
8451  content:'';position:absolute;top:0;left:0;right:0;height:1px;
8452  background:linear-gradient(to right,transparent 8%,rgba(255,255,255,.14) 50%,transparent 92%);
8453  z-index:10;pointer-events:none;
8454}
8455.ev-scard-bg{position:absolute;inset:0;background-size:cover;background-position:center;transition:transform .65s var(--ease)}
8456.ev-scard:hover .ev-scard-bg{transform:scale(1.08)}
8457.ev-scard-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,.04) 0%,rgba(0,0,0,.44) 48%,rgba(0,0,0,.92) 100%)}
8458.ev-scard-body{position:absolute;inset:0;padding:24px 26px 28px;display:flex;flex-direction:column;justify-content:space-between}
8459.ev-scard-top{display:flex;align-items:center;gap:12px}
8460.ev-scard-icon{
8461  width:40px;height:40px;border-radius:11px;
8462  background:rgba(255,255,255,.1);backdrop-filter:blur(12px);
8463  border:1px solid rgba(255,255,255,.12);
8464  display:flex;align-items:center;justify-content:center;font-size:1.1rem;
8465}
8466.ev-scard-name{font-size:1rem;font-weight:600;letter-spacing:-.015em;color:#fff}
8467.ev-scard-caps{display:flex;flex-direction:column;gap:11px}
8468.ev-scard-cap-title{font-size:.84rem;font-weight:600;color:#fff;line-height:1.3}
8469.ev-scard-cap-desc{font-size:.72rem;color:rgba(255,255,255,.42);margin-top:2px;line-height:1.5}
8470
8471/* \u2500 Process \u2500 */
8472.ev-process-section{padding:160px 24px;
8472background:#020208}
8473.ev-process-inner{max-width:1160px;margin:0 auto}
8474.ev-process-header{text-align:center;margin-bottom:120px}
8475.ev-process-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0;position:relative}
8476.ev-process-grid::before{
8477  content:'';position:absolute;top:0;left:0;right:0;height:1px;
8478  background:linear-gradient(to right,transparent 0%,rgba(255,255,255,.07) 10%,rgba(255,255,255,.07) 90%,transparent 100%);
8479}
8480.ev-step{padding:40px 36px 0}
8481.ev-step:first-child{padding-left:0}
8482.ev-step:last-child{padding-right:0}
8483.ev-step-num{
8484  font-size:.62rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;
8485  color:rgba(255,255,255,.18);margin-bottom:36px;
8486  display:flex;align-items:center;gap:12px;
8487}
8488.ev-step-num::before{content:'';display:block;width:24px;height:1px;background:rgba(255,255,255,.18)}
8489.ev-step-title{font-size:1.04rem;font-weight:600;margin-bottom:16px;line-height:1.32;color:#fff}
8490.ev-step-desc{font-size:.83rem;color:rgba(255,255,255,.44);line-height:1.82}
8491
8492/* \u2500 Shop Section \u2500 */
8493.ev-shop-banner{
8494  padding:0 24px 136px;
8494background:#020208;
8495}
8496.ev-shop-inner{
8497  max-width:1300px;margin:0 auto;
8498  border:1px solid rgba(255,255,255,.08);border-radius:24px;
8499  padding:64px;
8500  background:linear-gradient(135deg,rgba(255,255,255,.03) 0%,rgba(255,255,255,.01) 100%);
8501  position:relative;overflow:hidden;
8502  box-shadow:0 0 0 1px rgba(255,255,255,.04) inset;
8503}
8504.ev-shop-inner::before{
8505  content:'';position:absolute;top:0;left:0;right:0;height:1px;
8506  background:linear-gradient(to right,transparent 5%,rgba(255,255,255,.12) 50%,transparent 95%);
8507}
8508.ev-shop-inner::after{
8509  content:'';position:absolute;bottom:-100px;right:-100px;
8510  width:400px;height:400px;
8511  background:radial-gradient(ellipse,rgba(80,60,160,.08) 0%,transparent 60%);
8512  pointer-events:none;
8513}
8514.ev-shop-hdr{display:flex;justify-content:space-between;align-items:center;gap:40px;flex-wrap:wrap;position:relative;z-index:1}
8515.ev-shop-left{max-width:580px}
8516.ev-shop-cats{display:flex;gap:10px;margin-top:32px;flex-wrap:wrap}
8517.ev-shop-cat{
8518  display:inline-flex;align-items:center;gap:7px;
8519  padding:8px 16px;border-radius:100px;
8520  border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.03);
8521  font-size:.78rem;color:rgba(255,255,255,.5);text-decoration:none;
8522  transition:border-color .2s,color .2s,background .2s;white-space:nowrap;
8523}
8524.ev-shop-cat:hover{border-color:rgba(255,255,255,.18);color:#fff;background:rgba(255,255,255,.07)}
8525.ev-shop-cat-icon{font-size:.9rem}
8526
8527/* \u2500 Artists \u2500 */
8528.ev-artists-section{padding:160px 24px;
8528background:#020208}
8529.ev-artists-inner{max-width:1200px;margin:0 auto}
8530.ev-artists-hdr{margin-bottom:80px}
8531.ev-artists-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;perspective:1200px}
8532
8533/* Artist cards — cultural gradient backgrounds, no image reuse */
8534.ev-acard{
8535  position:relative;border-radius:var(--radius);overflow:hidden;
8536  aspect-ratio:4/5;cursor:pointer;text-decoration:none;color:#fff;
8537  display:block;
8538  border:1px solid rgba(255,255,255,.06);
8539  transform-style:preserve-3d;
8540  transition:transform .45s var(--ease),border-color .3s,box-shadow .45s;
8541}
8542.ev-acard:hover{transform:translateY(-10px) scale(1.018);border-color:rgba(255,255,255,.14);box-shadow:0 8px 16px rgba(0,0,0,.45),0 24px 64px rgba(0,0,0,.8),0 48px 120px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.1)}
8543/* Specular on artist cards too */
8544.ev-acard::before{
8545  content:'';position:absolute;top:0;left:0;right:0;height:1px;
8546  background:linear-gradient(to right,transparent 10%,rgba(255,255,255,.1) 50%,transparent 90%);
8547  z-index:5;
8548}
8549.ev-acard-overlay{
8550  position:absolute;inset:0;
8551  background:linear-gradient(to bottom,rgba(0,0,0,.18) 0%,rgba(0,0,0,.06) 40%,rgba(0,0,0,.9) 100%);
8552}
8553.ev-acard-body{position:absolute;bottom:0;left:0;right:0;padding:28px}
8554.ev-acard-lang{font-size:.6rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.3);margin-bottom:9px}
8555.ev-acard-title{font-size:1.12rem;font-weight:700;line-height:1.28;margin-bottom:10px;font-family:Georgia,'Times New Roman',serif;letter-spacing:-.02em;text-shadow:0 1px 0 rgba(255,255,255,.07),0 2px 8px rgba(0,0,0,.7)}
8556.ev-acard-meta{font-size:.76rem;color:rgba(255,255,255,.44);line-height:1.6}
8557
8558/* Artist card inner texture dots */
8559.ev-acard-dots{
8560  position:absolute;inset:0;pointer-events:none;
8561  background-image:radial-gradient(rgba(255,255,255,.035) 1px,transparent 1px);
8562  background-size:20px 20px;
8563  mask-image:radial-gradient(ellipse 80% 80% at 50% 35%,#000 20%,transparent 75%);
8564  -webkit-mask-image:radial-gradient(ellipse 80% 80% at 50% 35%,#000 20%,transparent 75%);
8565}
8566.ev-acard-glow{
8567  position:absolute;top:0;left:50%;transform:translateX(-50%);
8568  width:200px;height:200px;pointer-events:none;
8569  background:radial-gradient(ellipse at 50% 0%,var(--acard-glow,rgba(255,255,255,.1)) 0%,transparent 70%);
8570}
8571
8572/* \u2500 Labels \u2500 */
8573.ev-labels-section{padding:80px 24px 160px;
8573background:#020208}
8574.ev-labels-inner{max-width:1200px;margin:0 auto}
8575.ev-labels-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:12px;margin-top:80px}
8576.ev-lcard{
8577  background:#07070f;border:1px solid rgba(255,255,255,.06);
8578  border-radius:var(--radius);overflow:hidden;cursor:pointer;
8579  text-decoration:none;color:#fff;display:block;
8580  transition:border-color .3s,transform .3s,box-shadow .3s;
8581  position:relative;
8582}
8583.ev-lcard::before{
8584  content:'';position:absolute;top:0;left:0;right:0;height:3px;
8585  background:var(--lcard-accent,rgba(255,255,255,.15));
8586  z-index:5;pointer-events:none;
8587  opacity:.7;transition:opacity .3s;
8588}
8589.ev-lcard:hover::before{opacity:1}
8590.ev-lcard:hover{border-color:rgba(255,255,255,.14);transform:translateY(-8px);box-shadow:0 8px 24px rgba(0,0,0,.5),0 20px 60px rgba(0,0,0,.75),0 0 0 1px rgba(255,255,255,.08)}
8591.ev-lcard-img{aspect-ratio:16/9;overflow:hidden;position:relative;background:#0a0a14}
8592.ev-lcard-img-inner{width:100%;height:100%;display:flex;align-items:center;justify-content:center}
8593.ev-lcard-img-inner img.ev-lcard-logo-img{width:54px;height:54px;object-fit:contain;opacity:.15;filter:grayscale(1)}
8594.ev-lcard-body{padding:15px 17px 20px}
8595.ev-lcard-row{display:flex;align-items:center;gap:11px;margin-bottom:9px}
8596.ev-lcard-logo{width:30px;height:30px;object-fit:contain;border-radius:6px}
8597.ev-lcard-name{font-size:.9rem;font-weight:700;letter-spacing:-.01em}
8598.ev-tag{display:inline-block;padding:2px 10px;border-radius:100px;background:rgba(255,255,255,.05);font-size:.63rem;font-weight:600;color:rgba(255,255,255,.4);letter-spacing:.05em;margin-bottom:8px}
8599.ev-lcard-desc{font-size:.78rem;color:rgba(255,255,255,.38);line-height:1.68}
8600
8601/* \u2500 Stats \u2500 */
8602.ev-stats-section{padding:128px 24px;
8602background:#020208}
8603.ev-stats-inner{max-width:1040px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr)}
8604.ev-stat{text-align:center;padding:0 28px;border-right:1px solid rgba(255,255,255,.06)}
8605.ev-stat:last-child{border-right:none}
8606.ev-stat-val{font-size:clamp(3rem,5.5vw,4.8rem);font-weight:700;letter-spacing:-.046em;line-height:1;margin-bottom:12px;font-family:Georgia,'Times New Roman',serif;text-shadow:0 0 60px rgba(255,255,255,.08),0 2px 0 rgba(0,0,0,.5)}
8607.ev-stat-lbl{font-size:.76rem;color:rgba(255,255,255,.38);letter-spacing:.02em}
8608
8609/* \u2500 Mission \u2500 */
8610.ev-story-section{padding:160px 24px;background:#020208}
8611.ev-story-inner{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:120px;align-items:start}
8612.ev-highlights{list-style:none;display:flex;flex-direction:column;gap:18px;margin-top:32px}
8613.ev-highlights li{font-size:.88rem;color:rgba(255,255,255,.4);line-height:1.8;padding-left:22px;position:relative}
8614.ev-highlights li::before{content:'';position:absolute;left:0;top:10px;width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.18)}
8615
8616/* \u2500 CTA Banner \u2500 */
8617.ev-cta-section{padding:180px 24px;
8617background:#020208;position:relative;overflow:hidden}
8618.ev-cta-section::before{
8619  content:'';position:absolute;bottom:-180px;left:50%;transform:translateX(-50%);
8620  width:1000px;height:500px;
8621  background:radial-gradient(ellipse,rgba(80,60,140,.07) 0%,transparent 60%);
8622  pointer-events:none;
8623}
8624.ev-cta-inner{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:56px;flex-wrap:wrap}
8625.ev-cta-h{font-size:clamp(2.4rem,5.5vw,4.8rem);font-weight:700;letter-spacing:-.048em;line-height:1.06;max-width:700px;font-family:Georgia,'Times New Roman',serif}
8626.ev-cta-h .mw{color:rgba(255,255,255,.24);font-style:italic}
8627.ev-cta-actions{display:flex;align-items:center;gap:12px;flex-shrink:0}
8628
8629/* \u2500 Footer \u2500 */
8630.ev-footer{background:#020208;padding:0 32px 64px;position:relative;overflow:hidden}
8631.ev-footer-divider{
8632  height:1px;margin-bottom:64px;
8633  background:linear-gradient(to right,transparent 0%,rgba(255,255,255,.06) 15%,rgba(255,255,255,.06) 85%,transparent 100%);
8634}
8635.ev-footer::after{
8636  content:'';position:absolute;bottom:0;left:0;right:0;height:280px;
8637  background:radial-gradient(ellipse 65% 100% at 50% 100%,rgba(255,255,255,.016) 0%,transparent 70%);
8638  pointer-events:none;
8639}
8640.ev-footer-inner{max-width:1300px;margin:0 auto;display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:52px;position:relative}
8641.ev-footer-logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:#fff;margin-bottom:18px}
8642.ev-footer-copy{font-size:.74rem;color:rgba(255,255,255,.22);margin-bottom:22px;line-height:1.78}
8643.ev-footer-socials{display:flex;gap:10px}
8644.ev-footer-socials a{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;border:1px solid rgba(255,255,255,.07);color:rgba(255,255,255,.38);text-decoration:none;font-size:.76rem;transition:border-color .2s,color .2s}
8645.ev-footer-socials a:hover{border-color:rgba(255,255,255,.18);color:#fff}
8646.ev-footer-col-title{font-size:.74rem;font-weight:600;color:rgba(255,255,255,.6);margin-bottom:22px;letter-spacing:.02em}
8647.ev-footer-links{display:flex;flex-direction:column;gap:14px}
8648.ev-footer-links a{font-size:.78rem;color:rgba(255,255,255,.26);text-decoration:none;transition:color .2s}
8649.ev-footer-links a:hover{color:rgba(255,255,255,.75)}
8650
8651/* \u2500 Scroll reveal \u2500 */
8652.ev-reveal{opacity:0;transform:translateY(22px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
8653.ev-reveal.visible{opacity:1;transform:none}
8654.ev-reveal:nth-child(2){transition-delay:.1s}
8655.ev-reveal:nth-child(3){transition-delay:.2s}
8656.ev-reveal:nth-child(4){transition-delay:.3s}
8657
8658/* \u2500 Responsive \u2500 */
8659@media(max-width:1080px){
8660  .ev-svc-grid{grid-template-columns:1fr 1fr;grid-template-rows:360px 300px 300px}
8661  .ev-scard-mv{grid-column:1/3;grid-row:1}.ev-scard-shop{grid-column:1/3;grid-row:2}
8662  .ev-scard-img{grid-column:1;grid-row:3}.ev-scard-master{grid-column:2;grid-row:3}
8663  .ev-footer-inner{grid-template-columns:1fr 1fr}
8664  .ev-shop-inner{padding:40px}
8665}
8666@media(max-width:820px){
8667  .ev-nav-links{display:none}.ev-btn-outline{display:none}
8668  .ev-fi-1,.ev-fi-2,.ev-fi-3,.ev-fi-4{display:none}
8669  .ev-process-grid{grid-template-columns:1fr 1fr;gap:48px}
8670  .ev-process-grid::before{display:none}
8671  .ev-step{padding:0;border-bottom:1px solid rgba(255,255,255,.06);padding-bottom:36px}
8672  .ev-step:last-child{border-bottom:none}
8673  .ev-artists-grid{grid-template-columns:1fr 1fr}
8674  .ev-stats-inner{grid-template-columns:1fr 1fr;max-width:600px}
8675  .ev-stat{border-right:none;border-bottom:1px solid rgba(255,255,255,.06);padding-bottom:32px;margin-bottom:22px}
8676  .ev-story-inner{grid-template-columns:1fr;gap:48px}
8677  .ev-cta-inner{flex-direction:column;text-align:center}.ev-cta-actions{justify-content:center}
8678}
8678
8679@media(max-width:540px){
8680  .ev-process-grid{grid-template-columns:1fr}
8681  .ev-artists-grid{grid-template-columns:1fr}
8682  .ev-svc-grid{grid-template-columns:1fr;grid-template-rows:auto}
8683  .ev-scard-mv,.ev-scard-shop,.ev-scard-img,.ev-scard-master{grid-column:1;grid-row:auto;min-height:310px}
8684  .ev-footer-inner{grid-template-columns:1fr;gap:32px}
8685  .ev-shop-inner{padding:28px 20px}
8686}
8687</style>
8688
8689<div id="ev-wrap">
8690
8691<div class="ev-announce" id="ev-announce">
8692  <span>&#127881;&nbsp; <strong>New —</strong> Shop our artist-made collection now live. <a href="https://gallery.echovira.com" target="_blank" rel="noopener">Browse the gallery &rarr;</a></span>
8693  <button class="ev-announce-close" id="ev-announce-close" aria-label="Dismiss announcement">&times;</button>
8694</div>
8695
8696<nav class="ev-nav" id="ev-nav">
8697  <a href="https://echovira.com" class="ev-nav-logo">
8698    <div class="ev-logo-mark"><span></span><span></span><span></span><span></span></div>
8699    <span class="ev-logo-text">EchoVira</span>
8700  </a>
8701  <div class="ev-nav-links">
8702    <a href="#company">Company</a>
8703    <a href="#labels">Labels</a>
8704    <a href="#services">Services</a>
8705    <div class="ev-store-wrap" tabindex="0">
8706      <a href="https://gallery.echovira.com" onclick="event.preventDefault()">Store <span class="ev-nav-badge">New</span> &#9660;</a>
8707      <div class="ev-store-dd" role="menu">
8708        <div class="ev-store-dd-title">Shop by Category</div>
8709        <a href="https://gallery.echovira.com/collections/shop-all" role="menuitem">&#127978; Shop All</a>
8710        <a href="https://gallery.echovira.com/collections/new-arrivals" role="menuitem">&#10024; New Arrivals</a>
8711        <a href="https://gallery.echovira.com/collections/best-sellers" role="menuitem">&#11088; Best Sellers</a>
8712        <div class="ev-store-dd-sep"></div>
8713        <a href="https://gallery.echovira.com/collections/womens-clothing" role="menuitem">&#128100; Women</a>
8714        <a href="https://gallery.echovira.com/collections/mens-clothing" role="menuitem">&#128101; Men</a>
8715        <a href="https://gallery.echovira.com/collections/swimwear" role="menuitem">&#127946; Swimwear</a>
8716        <div class="ev-store-dd-sep"></div>
8717        <a href="https://gallery.echovira.com/collections/wall-art" role="menuitem">&#128444; Wall Art</a>
8718        <a href="https://gallery.echovira.com/collections/digital-art" role="menuitem">&#127912; Digital Art</a>
8719        <a href="https://gallery.echovira.com/collections/home-store" role="menuitem">&#127968; Home</a>
8720        <div class="ev-store-dd-sep"></div>
8721        <a href="https://gallery.echovira.com/collections/gifts" role="menuitem">&#127873; Gifts</a>
8722        <a href="https://gallery.echovira.com/collections/pet-store" role="menuitem">&#128054; Pets</a>
8723        <a href="https://gallery.echovira.com/collections/kids-family" role="menuitem">&#128100; Kids &amp; Family</a>
8724        <div class="ev-store-dd-sep"></div>
8725        <a href="https://gallery.echovira.com/collections/limited-editions" role="menuitem">&#128142; Limited Editions</a>
8726      </div>
8727    </div>
8728  </div>
8729  <div class="ev-nav-actions">
8730    <a href="#get-started" class="ev-btn-white">Get started</a>
8731  </div>
8732</nav>
8733
8734<span id="main-content" tabindex="-1"></span>
8735
8736<section class="ev-hero">
8737  <div class="ev-hero-arcs">
8738    <svg width="100%" height="100%" viewBox="0 0 1440 900" preserveAspectRatio="xMidYMid slice" fill="none" xmlns="http://www.w3.org/2000/svg">
8739      <path d="M 720 1050 A 820 820 0 0 1 -250 380" stroke="rgba(255,255,255,0.038)" stroke-width="1" fill="none"/>
8740      <path d="M 720 1050 A 1060 1060 0 0 1 -490 180" stroke="rgba(255,255,255,0.022)" stroke-width="1.5" fill="none"/>
8741      <path d="M 720 1050 A 640 640 0 0 0 1780 430" stroke="rgba(255,255,255,0.03)" stroke-width="1" fill="none"/>
8742      <path d="M 720 1050 A 1280 1280 0 0 0 2000 -20" stroke="rgba(255,255,255,0.016)" stroke-width="1" fill="none"/>
8743      <ellipse cx="720" cy="450" rx="620" ry="400" stroke="rgba(255,255,255,0.016)" stroke-width="1" fill="none"/>
8744      <ellipse cx="720" cy="450" rx="420" ry="270" stroke="rgba(255,255,255,0.012)" stroke-width="1" fill="none"/>
8745    </svg>
8746  </div>
8747  <div class="ev-hero-glow"></div>
8748
8749  <div class="ev-fi ev-fi-1">
8750    <div class="ev-fi-meta"><span>Bahira</span><span class="ev-fi-dot">\xb7</span><span>Arabic</span></div>
8751    <div class="ev-fi-frame"><img src="https://media.echovira.com/echovira/bahira_leil_al_madina_static_banner_visualizer_chorus_segment_0.webp" alt="Bahira music visualizer" loading="eager"></div>
8752  </div>
8753  <div class="ev-fi ev-fi-2">
8754    <div class="ev-fi-meta"><span>Byeolbit</span><span class="ev-fi-dot">\xb7</span><span>Korean</span></div>
8755    <div class="ev-fi-frame"><img src="https://media.echovira.com/echovira/byeolbit_doshi_static_banner_visualizer_micro_segment_0.webp" alt="Byeolbit music visualizer" loading="eager"></div>
8756  </div>
8757  <div class="ev-fi ev-fi-3">
8758    <div class="ev-fi-meta"><span>Hich</span><span class="ev-fi-dot">\xb7</span><span>Farsi</span></div>
8759    <div class="ev-fi-frame"><img src="https://media.echovira.com/echovira/hich_aroom_aroom_static_banner_visualizer_chorus_segment_0.webp" alt="Hich music visualizer" loading="eager"></div>
8760  </div>
8761  <div class="ev-fi ev-fi-4">
8762    <div class="ev-fi-meta"><span>Morvina</span><span class="ev-fi-dot">\xb7</span><span>Russian</span></div>
8763    <div class="ev-fi-frame"><img src="https://media.echovira.com/echovira/morvina_eto_rossiya_static_banner_visualizer_chorus_segment_0.webp" alt="Morvina music visualizer" loading="eager"></div>
8764  </div>
8765
8766  <div class="ev-hero-vignette"></div>
8767  <div class="ev-hero-content">
8768    <a href="#services" class="ev-pill">
8769      <span class="ev-pill-badge">New</span>
8770      <span class="ev-pill-sep"></span>
8771      <span>Music videos, mastering &amp; creative assets &rarr;</span>
8772    </a>
8773    <h1 class="ev-hero-h1">
8774      <span class="line1">Echoes your</span>
8775      <span class="ev-cycle-wrap">
8776        <span class="ev-cycle-inner">
8777          <span>voice.</span>
8778          <span>art.</span>
8779          <span>vision.</span>
8780        </span>
8781      </span>
8782    </h1>
8783    <p class="ev-hero-sub">The platform where your music finds its visual identity &mdash; cinematic videos, mastered sound, and a shop that belongs entirely to you.</p>
8784    <div class="ev-hero-btns">
8785      <a href="#get-started" class="ev-btn-primary">
8786        Get started free
8787        <svg width="13" height="13" viewBox="0 0 13 13" fill="none"><path d="M2 6.5h9M7 2.5l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
8788      </a>
8789      <a href="https://gallery.echovira.com" class="ev-btn-shop">Explore the store &nearr;</a>
8790    </div>
8791  </div>
8792</section>
8793
8794<div class="ev-divider"></div>
8795
8796<div class="ev-marquee-wrap">
8797  <p class="ev-marquee-label">The EchoVira network &mdash; 12 labels, one multilingual artist roster</p>
8798  <div class="ev-mq-fade">
8799    <div class="ev-mq-track" id="ev-mq">${o}</div>
8800  </div>
8801</div>
8802
8803<div class="ev-divider"></div>
8804
8805<section class="ev-svc-section" id="services">
8806  <div class="ev-svc-inner">
8807    <div class="ev-svc-hdr">
8808      <div class="ev-svc-hdr-left ev-reveal">
8809        <div class="ev-eyebrow">Platform</div>
8810        <h2 class="ev-h2">Every service your<br>music career needs.</h2>
8811        <p class="ev-lead">One platform. Music videos, creative images, professional mastering, and your own artist shop.</p>
8812      </div>
8813      <div class="ev-svc-hdr-right ev-reveal">
8814        <a href="https://gallery.echovira.com" class="ev-link-btn">Shop our selection &nearr;</a>
8815        <a href="#get-started" class="ev-btn-white" style="font-size:.8rem;padding:9px 18px">Get started free</a>
8816      </div>
8817    </div>
8818    <div class="ev-svc-grid ev-reveal">
8819      <a href="https://musicvideo.echovira.com" class="ev-scard ev-scard-mv">
8820        <div class="ev-scard-bg" style="background-image:url('https://media.echovira.com/echovira/viz_bahira.webp')"></div>
8821        <div class="ev-scard-overlay"></div>
8822        <div class="ev-scard-body">
8823          <div class="ev-scard-top"><div class="ev-scard-icon">&#127902;</div><span class="ev-scard-name">Music Video Production</span></div>
8824          <div class="ev-scard-caps">
8825            <div><div class="ev-scard-cap-title">Cinematic Music Videos</div><div class="ev-scard-cap-desc">AI-enhanced, professionally produced 4K visuals</div></div>
8826            <div><div class="ev-scard-cap-title">Audio Visualizers</div><div class="ev-scard-cap-desc">Dynamic animated visuals synced to your track</div></div>
8827            <div><div class="ev-scard-cap-title">Lyric Videos</div><div class="ev-scard-cap-desc">Typographic and kinetic lyric animation</div></div>
8828            <div><div class="ev-scard-cap-title">Social Clips</div><div class="ev-scard-cap-desc">Cut for Instagram, TikTok &amp; YouTube Shorts</div></div>
8829          </div>
8830        </div>
8831      </a>
8832      <a href="https://gallery.echovira.com" class="ev-scard ev-scard-shop">
8833        <div class="ev-scard-bg" style="background-image:url('https://media.echovira.com/echovira/viz_morvina.webp')"></div>
8834        <div class="ev-scard-overlay"></div>
8835        <div class="ev-scard-body">
8836          <div class="ev-scard-top"><div class="ev-scard-icon">&#127978;</div><span class="ev-scard-name">Artist Shop</span></div>
8837          <div class="ev-scard-caps">
8838            <div><div class="ev-scard-cap-title">Merch Design</div><div class="ev-scard-cap-desc">Custom artist merchandise on demand</div></div>
8839            <div><div class="ev-scard-cap-title">Digital Downloads</div><div class="ev-scard-cap-desc">Sell music, stems, samples &amp; presets</div></div>
8840            <div><div class="ev-scard-cap-title">Physical Goods</div><div class="ev-scard-cap-desc">CDs, vinyl, posters &amp; collectibles</div></div>
8841            <div><div class="ev-scard-cap-title">Revenue Share</div><div class="ev-scard-cap-desc">Keep 90% of every sale &mdash; forever</div></div>
8842            <div><div class="ev-scard-cap-title">Global Shipping</div><div class="ev-scard-cap-desc">Worldwide fulfillment, zero inventory risk</div></div>
8843          </div>
8844        </div>
8845      </a>
8846      <a href="#services" class="ev-scard ev-scard-img">
8847        <div class="ev-scard-bg" style="background-image:url('https://media.echovira.com/echovira/viz_byeolbit.webp')"></div>
8848        <div class="ev-scard-overlay"></div>
8849        <div class="ev-scard-body">
8850          <div class="ev-scard-top"><div class="ev-scard-icon">&#127912;</div><span class="ev-scard-name">AI Creative Images</span></div>
8851          <div class="ev-scard-caps">
8852            <div><div class="ev-scard-cap-title">Album Artwork</div><div class="ev-scard-cap-desc">Streaming-ready cover art</div></div>
8853            <div><div class="ev-scard-cap-title">Press Photos</div><div class="ev-scard-cap-desc">Professional AI-generated artist imagery</div></div>
8854            <div><div class="ev-scard-cap-title">Promo Posters</div><div class="ev-scard-cap-desc">Event &amp; release promotion visuals</div></div>
8855          </div>
8856        </div>
8857      </a>
8858      <a href="https://mastering.echovira.com" class="ev-scard ev-scard-master">
8859        <div class="ev-scard-bg" style="background-image:url('https://media.echovira.com/echovira/viz_hich.webp')"></div>
8860        <div class="ev-scard-overlay"></div>
8861        <div class="ev-scard-body">
8862          <div class="ev-scard-top"><div class="ev-scard-icon">&#127926;</div><span class="ev-scard-name">Audio Mastering</span></div>
8863          <div class="ev-scard-caps">
8864            <div><div class="ev-scard-cap-title">Streaming Masters</div><div class="ev-scard-cap-desc">Optimised for Spotify, Apple Music &amp; more</div></div>
8865            <div><div class="ev-scard-cap-title">Stem Mastering</div><div class="ev-scard-cap-desc">Precision control across your mix</div></div>
8866            <div><div class="ev-scard-cap-title">Spatial Audio</div><div class="ev-scard-cap-desc">Dolby Atmos &amp; Apple Spatial ready</div></div>
8867          </div>
8868        </div>
8869      </a>
8870    </div>
8871  </div>
8872</section>
8873
8874<div class="ev-divider"></div>
8875
8876<section class="ev-process-section">
8877  <div class="ev-process-inner">
8878    <div class="ev-process-header ev-reveal">
8879      <div class="ev-eyebrow">How it works</div>
8880      <h2 class="ev-h2">From track to screen,<br>in four steps.</h2>
8881    </div>
8882    <div class="ev-process-grid">
8883      <div class="ev-step ev-reveal"><div class="ev-step-num">01</div><div class="ev-step-title">Upload Your Music</div><p class="ev-step-desc">Share your track, stems, or reference files. We accept all major formats &mdash; WAV, MP3, FLAC &amp; stem packages.</p></div>
8884      <div class="ev-step ev-reveal"><div class="ev-step-num">02</div><div class="ev-step-title">Choose Your Service</div><p class="ev-step-desc">Select from music video production, mastering, AI creative images, or artist shop setup. Mix and match freely.</p></div>
8885      <div class="ev-step ev-reveal"><div class="ev-step-num">03</div><div class="ev-step-title">We Create &amp; Deliver</div><p class="ev-step-desc">Our team &mdash; powered by AI and creative professionals &mdash; produces your assets to cinema-grade standards.</p></div>
8886      <div class="ev-step ev-reveal"><div class="ev-step-num">04</div><div class="ev-step-title">You Own Everything</div><p class="ev-step-desc">All assets are yours. 100% rights retained. Publish everywhere &mdash; streaming, social media &amp; live events.</p></div>
8887    </div>
8888  </div>
8889</section>
8890
8891<div class="ev-divider"></div>
8892
8893<section class="ev-shop-banner" id="shop">
8894  <div class="ev-shop-inner">
8895    <div class="ev-shop-hdr">
8896      <div class="ev-shop-left ev-reveal">
8897        <div class="ev-eyebrow">Echovira Gallery</div>
8898        <h2 class="ev-h2" style="max-width:480px">Shop our selection of artist-made goods.</h2>
8899        <p class="ev-lead">Browse 150+ artists across 12 labels &mdash; from wall art to apparel, digital downloads to collectibles.</p>
8900        <div class="ev-shop-cats">
8901          <a href="https://gallery.echovira.com/collections/new-arrivals" class="ev-shop-cat"><span class="ev-shop-cat-icon">&#10024;</span>New Arrivals</a>
8902          <a href="https://gallery.echovira.com/collections/womens-clothing" class="ev-shop-cat"><span class="ev-shop-cat-icon">&#128100;</span>Women</a>
8903          <a href="https://gallery.echovira.com/collections/mens-clothing" class="ev-shop-cat"><span class="ev-shop-cat-icon">&#128101;</span>Men</a>
8904          <a href="https://gallery.echovira.com/collections/wall-art" class="ev-shop-cat"><span class="ev-shop-cat-icon">&#128444;</span>Wall Art</a>
8905          <a href="https://gallery.echovira.com/collections/digital-art" class="ev-shop-cat"><span class="ev-shop-cat-icon">&#127912;</span>Digital Art</a>
8906          <a href="https://gallery.echovira.com/collections/home-store" class="ev-shop-cat"><span class="ev-shop-cat-icon">&#127968;</span>Home</a>
8907          <a href="https://gallery.echovira.com/collections/gifts" class="ev-shop-cat"><span class="ev-shop-cat-icon">&#127873;</span>Gifts</a>
8908          <a href="https://gallery.echovira.com/collections/swimwear" class="ev-shop-cat"><span class="ev-shop-cat-icon">&#127946;</span>Swimwear</a>
8909          <a href="https://gallery.echovira.com/collections/limited-editions" class="ev-shop-cat"><span class="ev-shop-cat-icon">&#128142;
8909</span>Limited Editions</a>
8910        </div>
8911      </div>
8912      <div class="ev-reveal" style="flex-shrink:0">
8913        <a href="https://gallery.echovira.com" class="ev-btn-primary" style="font-size:.92rem;padding:14px 32px">
8914          Shop all artists
8915          <svg width="13" height="13" viewBox="0 0 13 13" fill="none"><path d="M2 6.5h9M7 2.5l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
8916        </a>
8917      </div>
8918    </div>
8919  </div>
8920</section>
8921
8922<div class="ev-divider"></div>
8923
8924<section class="ev-artists-section" id="artists">
8925  <div class="ev-artists-inner">
8926    <div class="ev-artists-hdr ev-reveal">
8927      <div class="ev-eyebrow">Artists on EchoVira</div>
8928      <h2 class="ev-h2">Artists thriving<br>on EchoVira.</h2>
8929      <p class="ev-lead" style="margin-top:16px">From Persian classical to Korean pop &mdash; every tradition has a home and every voice gets heard.</p>
8930    </div>
8931    <div class="ev-artists-grid" id="ev-agrid">${c}</div>
8932  </div>
8933</section>
8934
8935<div class="ev-divider"></div>
8936
8937<section class="ev-labels-section" id="labels">
8938  <div class="ev-labels-inner">
8939    <div class="ev-reveal">
8940      <div class="ev-eyebrow">Our Labels</div>
8941      <h2 class="ev-h2">12 labels. 150+ artists.<br>One mission.</h2>
8942      <p class="ev-lead" style="margin-top:16px">Each EchoVira label is built around a specific language community &mdash; a culture with its own musical DNA.</p>
8943    </div>
8944    <div class="ev-labels-grid" id="ev-lgrid">${d}</div>
8945  </div>
8946</section>
8947
8948<div class="ev-divider"></div>
8949
8950<div class="ev-stats-section">
8951  <div class="ev-stats-inner ev-reveal">
8952    <div class="ev-stat"><div class="ev-stat-val">12</div><div class="ev-stat-lbl">Global labels</div></div>
8953    <div class="ev-stat"><div class="ev-stat-val">150+</div><div class="ev-stat-lbl">Artists worldwide</div></div>
8954    <div class="ev-stat"><div class="ev-stat-val">10+</div><div class="ev-stat-lbl">Languages</div></div>
8955    <div class="ev-stat"><div class="ev-stat-val">100%</div><div class="ev-stat-lbl">Rights retained</div></div>
8956  </div>
8957</div>
8958
8959<div class="ev-divider"></div>
8960
8961<section class="ev-story-section" id="company">
8962  <div class="ev-story-inner">
8963    <div class="ev-reveal">
8964      <div class="ev-eyebrow">Our Mission</div>
8965      <h2 class="ev-h2">A new sound needs<br>a new platform.</h2>
8966    </div>
8967    <div class="ev-reveal">
8968      <p style="font-size:.95rem;color:rgba(255,255,255,.46);line-height:1.9;margin-bottom:28px">EchoVira was built for emerging artists who refuse to compromise. We believe every musician &mdash; regardless of genre, language, or geography &mdash; deserves world-class production tools and creative services.</p>
8969      <ul class="ev-highlights">
8970        <li>Professional music video production powered by AI and human creativity</li>
8971        <li>Industry-standard mastering for every major streaming platform</li>
8972        <li>Creative image services from album art to press photography</li>
8973        <li>Your own artist shop to sell music, merch &amp; digital goods</li>
8974        <li>12 culturally-rooted labels supporting artists in their own language</li>
8975      </ul>
8976    </div>
8977  </div>
8978</section>
8979
8980<div class="ev-divider"></div>
8981
8982<section class="ev-cta-section" id="get-started">
8983  <div class="ev-cta-inner">
8984    <h2 class="ev-cta-h">A <span class="mw">new sound</span> needs<br>a <span class="mw">new canvas.</span></h2>
8985    <div class="ev-cta-actions">
8986      <a href="https://gallery.echovira.com" class="ev-btn-shop">Shop our selection &nearr;</a>
8987      <a href="https://musicvideo.echovira.com" class="ev-btn-primary">
8988        Get started free
8989        <svg width="13" height="13" viewBox="0 0 13 13" fill="none"><path d="M2 6.5h9M7 2.5l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
8990      </a>
8991    </div>
8992  </div>
8993</section>
8994
8995<footer class="ev-footer">
8996  <div class="ev-footer-divider"></div>
8997  <div class="ev-footer-inner">
8998    <div>
8999      <a href="https://echovira.com" class="ev-footer-logo">
9000        <div class="ev-logo-mark"><span></span><span></span><span></span><span></span></div>
9001        <span class="ev-logo-text">EchoVira</span>
9002      </a>
9003      <p class="ev-footer-copy">Copyright &copy; 2026 EchoVira. All rights reserved.<br><span style="color:rgba(255,255,255,.14)">Where every sound finds its voice.</span></p>
9004      <div class="ev-footer-socials">
9005        <a href="https://x.com/echovira" title="X / Twitter" target="_blank" rel="noopener">
9006          <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.744l7.73-8.835L1.254 2.25H8.08l4.26 5.632 5.904-5.632zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
9007        </a>
9008        <a href="https://www.instagram.com/echoviramusic/" title="Instagram" target="_blank" rel="noopener">
9009          <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="5" ry="5"/><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"/><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"/></svg>
9010        </a>
9011        <a href="https://www.tiktok.com/@echovira" title="TikTok" target="_blank" rel="noopener">
9012          <svg width="13" height="13" viewBox="0 0 24 24" fill="currentColor"><path d="M19.59 6.69a4.83 4.83 0 01-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 01-2.88 2.5 2.89 2.89 0 01-2.89-2.89 2.89 2.89 0 012.89-2.89c.28 0 .54.04.79.1V9.01a6.33 6.33 0 00-.79-.05 6.34 6.34 0 00-6.34 6.34 6.34 6.34 0 006.34 6.34 6.34 6.34 0 006.33-6.34V8.69a8.16 8.16 0 004.77 1.53V6.76a4.85 4.85 0 01-1-.07z"/></svg>
9013        </a>
9014      </div>
9015    </div>
9016    <div>
9017      <div class="ev-footer-col-title">Company</div>
9018      <div class="ev-footer-links">
9019        <a href="/about">About</a><a href="/contact">Contact</a>
9020        <a href="/social">Social Links</a>
9021        <a href="#artists">Artists</a>
9022        <a href="#labels">Labels</a>
9023      </div>
9024    </div>
9025    <div>
9026      <div class="ev-footer-col-title">Platform</div>
9027      <div class="ev-footer-links">
9028        <a href="https://musicvideo.echovira.com">Music Video</a>
9029        <a href="https://mastering.echovira.com">Mastering</a>
9030        <a href="#services">AI Images</a>
9031        <a href="https://gallery.echovira.com">Artist Shop</a>
9032      </div>
9033    </div>
9034    <div>
9035      <div class="ev-footer-col-title">Legal</div>
9036      <div class="ev-footer-links">
9037        <a href="/privacy">Privacy Policy</a>
9038        <a href="/terms">Terms of Service</a>
9039      </div>
9040    </div>
9041  </div>
9042</footer>
9043
9044</div>`;e.s(["EchoviraComPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=a.querySelector("#ev-announce"),t=a.querySelector("#ev-announce-close"),s=a.querySelector("#ev-wrap"),r=()=>{i&&s&&s.style.setProperty("--bar-h",`${i.offsetHeight}px`)};if(r(),window.addEventListener("resize",r),t&&i){t.addEventListener("click",()=>{let e=a.querySelector("#ev-wrap");e&&e.classList.add("bar-gone");try{sessionStorage.setItem("ev-announce-dismissed","1")}catch(e){}});try{if("1"===sessionStorage.getItem("ev-announce-dismissed")){let e=a.querySelector("#ev-wrap");e&&e.classList.add("bar-gone")}}catch(e){}}let n=new IntersectionObserver(e=>e.forEach(e=>{e.isIntersecting&&(e.target.classList.add("visible"),n.unobserve(e.target))}),{threshold:.05});a.querySelectorAll(".ev-reveal").forEach(e=>n.observe(e));let o=a.querySelector("#ev-nav"),l=()=>{if(!o)return;let e=window.scrollY>60;o.style.background=e?"rgba(2,2,8,.96)":"rgba(2,2,8,.7)",o.style.borderBottomColor=e?"rgba(255,255,255,.09)":"rgba(255,255,255,.07)";let i=a.querySelector("#ev-wrap"),t=i?.classList.contains("bar-gone");o.style.top=!t&&window.scrollY<10?"var(--bar-h,38px)":"0"};return window.addEventListener("scroll",l,{passive:!0}),()=>{n.disconnect(),window.removeEventListener("scroll",l)}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,className:"echovira-page-root",dangerouslySetInnerHTML:{__html:(0,s.stripHtmlComments)(h)},suppressHydrationWarning:!0}),(0,a.jsx)(t.EchoviraThemeToggle,{})]})}])},168051,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(601048),s=e.i(920206);let r="https://media.echovira.com/echovira",n=[{slug:"amanecer",name:"Amanecer",native:"",lang:"Spanish",url:"https://amanecer.echovira.com",color:"linear-gradient(135deg,#3a1505,#7a2e0a)",links:[{platform:"Spotify",url:"https://open.spotify.com/artist/4MWijAHWmVep71ywZ3d1NP",icon:"sp"},{platform:"YouTube",url:"https://youtube.com/@AmanecerOfficial",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/amanecermusicband",icon:"ig"},{platform:"TikTok",url:"https://tiktok.com/@amanecerofficial",icon:"tk"},{platform:"Facebook",url:"https://facebook.com/AmanecerMusicBand",icon:"fb"}]},{slug:"bahira",name:"Bahira",native:"بهيرة",lang:"Arabic",url:"https://bahira.echovira.com",color:"linear-gradient(135deg,#2a1408,#5c2a10)",links:[{platform:"Spotify",url:"https://open.spotify.com/artist/1lDTNwDlUC3KoBWTUeY9ug",icon:"sp"},{platform:"YouTube",url:"https://youtube.com/@BahiraMusicBand",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/bahiramusicband",icon:"ig"},{platform:"TikTok",url:"https://tiktok.com/@bahiramusicband",icon:"tk"},{platform:"Facebook",url:"https://facebook.com/BahiraMusicBand",icon:"fb"},{platform:"Deezer",url:"https://deezer.com/artist/336169461",icon:"dz"}]},{slug:"byeolbit",name:"Byeolbit",native:"별빛",lang:"Korean",url:"https://byeolbit.echovira.com",color:"linear-gradient(135deg,#08122e,#142050)",links:[{platform:"Spotify",url:"https://open.spotify.com/artist/6YDwSJq7fy9y4fRRg1sGn0",icon:"sp"},{platform:"YouTube",url:"https://youtube.com/@ByeolbitOfficial",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/byeolbitmusicband",icon:"ig"},{platform:"TikTok",url:"https://tiktok.com/@byeolbitofficial",icon:"tk"},{platform:"Facebook",url:"https://facebook.com/byeolbitofficial",icon:"fb"},{platform:"Deezer",url:"https://deezer.com/artist/285753421",icon:"dz"}]},{slug:"cortica",name:"Cortica",native:"Cortiça",lang:"Portuguese",url:"https://cortica.echovira.com",color:"linear-gradient(135deg,#0a1e0a,#143a14)",links:[{platform:"Spotify",url:"https://open.spotify.com/artist/0IwbKdreQksGqzs1DgpFlb",icon:"sp"},{platform:"YouTube",url:"https://youtube.com/@CorticaOfficial",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/corticaofficial",icon:"ig"},{platform:"TikTok",url:"https://tiktok.com/@corticaofficial",icon:"tk"},{platform:"Facebook",url:"https://facebook.com/corticaofficial",icon:"fb"},{platform:"Deezer",url:"https://deezer.com/artist/352478752",icon:"dz"}]},{slug:"echoes",name:"Echoes",native:"",lang:"Instrumental",url:"https://echoes.echovira.com",color:"linear-gradient(135deg,#0a0a14,#16162a)",links:[{platform:"Spotify",url:"https://open.spotify.com/artist/3cXp7w8fWmpTTjeGwJX2ow",icon:"sp"},{platform:"YouTube",url:"https://youtube.com/@EchoesMusicBand",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/echoesmusicband",icon:"ig"},{platform:"TikTok",url:"https://tiktok.com/@echoesmusicband",icon:"tk"},{platform:"Facebook",url:"https://facebook.com/echoesintrumental",icon:"fb"}]},{slug:"frekans",name:"Frekans",native:"",lang:"Turkish",url:"https://frekans.echovira.com",color:"linear-gradient(135deg,#1a0a06,#341608)",links:[{platform:"Spotify",url:"https://open.spotify.com/artist/1CNdahI2tcqbDZYBSgTMU4",icon:"sp"},{platform:"YouTube",url:"https://youtube.com/@FrekansMusicBand",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/frekansmusicband",icon:"ig"},{platform:"TikTok",url:"https://tiktok.com/@frekansofficial",icon:"tk"},{platform:"Facebook",url:"https://facebook.com/frekansmusicband",icon:"fb"}]},{slug:"hich",name:"Hich",native:"هیچ",lang:"Farsi",url:"https://hich.echovira.com",color:"linear-gradient(135deg,#14063a,#280a6e)",links:[{platform:"Spotify",url:"https://open.spotify.com/artist/3zSdSaMl0cVnYHCgPLRoe4",icon:"sp"},{platform:"YouTube",url:"https://youtube.com/@HichOfficial",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/hichmusicbandofficial",icon:"ig"},{platform:"TikTok",url:"https://tiktok.com/@hichofficial",icon:"tk"},{platform:"Facebook",url:"https://facebook.com/hichmusicband",icon:"fb"}]},{slug:"luoxi",name:"Luoxi",native:"落曦",lang:"Chinese",url:"https://luoxi.echovira.com",color:"linear-gradient(135deg,#1a0808,#360e0e)",links:[{platform:"Spotify",url:"https://open.spotify.com/artist/1
9044FYdLlTPh0trSu4CbIGmhX",icon:"sp"},{platform:"YouTube",url:"https://youtube.com/@LuoxiOfficial",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/luoxiofficial",icon:"ig"},{platform:"TikTok",url:"https://tiktok.com/@luoxiofficial",icon:"tk"},{platform:"Facebook",url:"https://facebook.com/luoxiofficial",icon:"fb"},{platform:"Deezer",url:"https://deezer.com/artist/265272442",icon:"dz"}]},{slug:"miroir",name:"Miroir",native:"",lang:"French",url:"https://miroir.echovira.com",color:"linear-gradient(135deg,#0a0a1a,#141430)",links:[{platform:"Spotify",url:"https://open.spotify.com/artist/18VrdXseYGZjJMWVc7LlRI",icon:"sp"},{platform:"YouTube",url:"https://youtube.com/@MiroirMusicBand",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/miroirmusicband",icon:"ig"},{platform:"TikTok",url:"https://tiktok.com/@miroirmusicband",icon:"tk"},{platform:"Facebook",url:"https://facebook.com/Miroirofficial",icon:"fb"},{platform:"Deezer",url:"https://deezer.com/artist/1274035",icon:"dz"}]},{slug:"morvina",name:"Morvina",native:"Морвина",lang:"Russian",url:"https://morvina.echovira.com",color:"linear-gradient(135deg,#1a0408,#36080e)",links:[{platform:"Spotify",url:"https://open.spotify.com/artist/7xJYc0NVZ6wXpYcswwCbHz",icon:"sp"},{platform:"YouTube",url:"https://youtube.com/@MorvinaOfficial",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/morvinaofficial",icon:"ig"},{platform:"TikTok",url:"https://tiktok.com/@morvinaofficial",icon:"tk"},{platform:"Facebook",url:"https://facebook.com/morvinaofficial",icon:"fb"},{platform:"Deezer",url:"https://deezer.com/artist/352174772",icon:"dz"}]},{slug:"pulseborn",name:"Pulseborn",native:"",lang:"English",url:"https://pulseborn.echovira.com",color:"linear-gradient(135deg,#060616,#0e0e30)",links:[{platform:"Spotify",url:"https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6",icon:"sp"},{platform:"YouTube",url:"https://youtube.com/@Pulseborn",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/pulsebornofficial",icon:"ig"},{platform:"TikTok",url:"https://tiktok.com/@pulseborn",icon:"tk"},{platform:"Facebook",url:"https://facebook.com/Pulsebornofficial",icon:"fb"},{platform:"Deezer",url:"https://deezer.com/artist/345951151",icon:"dz"}]},{slug:"syahi",name:"Syahi",native:"स्याही",lang:"Hindi",url:"https://syahi.echovira.com",color:"linear-gradient(135deg,#1a0e04,#362008)",links:[{platform:"Spotify",url:"https://open.spotify.com/artist/3D8ZXPJQtuiqhGVmR5k08L",icon:"sp"},{platform:"YouTube",url:"https://youtube.com/@SyahiOfficial",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/syahimusicband",icon:"ig"},{platform:"TikTok",url:"https://tiktok.com/@syahiofficial",icon:"tk"},{platform:"Facebook",url:"https://facebook.com/Syahimusicband",icon:"fb"},{platform:"Deezer",url:"https://deezer.com/artist/77101982",icon:"dz"}]},{slug:"echovira-cinema",name:"EchoVira Cinema",native:"",lang:"Cinema",url:"https://echovira.com",color:"linear-gradient(135deg,#0a0a18,#1a1a30)",links:[{platform:"Spotify",url:"https://open.spotify.com/artist/07gRq5MLkPSFcl6ECDONS1",icon:"sp"},{platform:"YouTube",url:"https://youtube.com/@EchoviraCinema",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/echoviracinema",icon:"ig"},{platform:"Facebook",url:"https://facebook.com/EchoviraCinema",icon:"fb"}]},{slug:"echovira-gallery",name:"EchoVira Gallery",native:"",lang:"Gallery",url:"https://gallery.echovira.com",color:"linear-gradient(135deg,#0e0a18,#1e1428)",links:[{platform:"YouTube",url:"https://youtube.com/@EchoViraGallery",icon:"yt"},{platform:"Instagram",url:"https://instagram.com/echoviragallery",icon:"ig"},{platform:"Facebook",url:"https://facebook.com/EchoviraCinema",icon:"fb"}]}],o=`<style>
9045/* ── Reset ── */
9046*{box-sizing:border-box;margin:0;padding:0}
9047body,html{-webkit-font-smoothing:antialiased}
9048
9049/* ── Root ── */
9050.ev-links-root{
9051  min-height:100vh;
9052  background:#020208;
9053  color:#fff;
9054  font-family:-apple-system,BlinkMacSystemFont,'Inter','Segoe UI',sans-serif;
9055  --border:rgba(255,255,255,.07);
9056  --muted:rgba(255,255,255,.46);
9057  --dim:rgba(255,255,255,.24);
9058  --ease:cubic-bezier(.4,0,.2,1);
9059}
9060
9061/* Dot-grid background texture */
9062.ev-links-root::before{
9063  content:'';position:fixed;inset:0;pointer-events:none;z-index:0;
9064  background-image:radial-gradient(rgba(255,255,255,.04) 1px,transparent 1px);
9065  background-size:24px 24px;
9066  mask-image:radial-gradient(ellipse 100% 100% at 50% 0%,#000 30%,transparent 85%);
9067  -webkit-mask-image:radial-gradient(ellipse 100% 100% at 50% 0%,#000 30%,transparent 85%);
9068}
9069
9070/* ── Nav ── */
9071.ev-ln-nav{
9072  position:sticky;top:0;z-index:100;
9073  display:flex;align-items:center;justify-content:space-between;
9074  padding:0 28px;height:54px;
9075  background:rgba(2,2,8,.82);
9076  backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4);
9077  border-bottom:1px solid var(--border);
9078}
9079.ev-ln-logo{display:flex;align-items:center;gap:9px;text-decoration:none;color:#fff}
9080.ev-logo-mark{width:20px;height:20px;display:grid;grid-template-columns:1fr 1fr;gap:2.5px}
9081.ev-logo-mark span{background:#fff;border-radius:2.5px;display:block}
9082.ev-logo-text{font-size:.92rem;font-weight:600;letter-spacing:-.01em;font-family:Georgia,'Times New Roman',serif;font-style:italic}
9083.ev-ln-back{font-size:.76rem;color:var(--muted);text-decoration:none;display:flex;align-items:center;gap:5px;transition:color .2s}
9084.ev-ln-back:hover{color:#fff}
9085
9086/* ── Header ── */
9087.ev-ln-header{
9088  position:relative;z-index:1;
9089  padding:72px 24px 64px;text-align:center;
9090  background:radial-gradient(ellipse 80% 60% at 50% 0%,rgba(80,60,140,.06) 0%,transparent 70%);
9091}
9092.ev-ln-header-eyebrow{
9093  font-size:.62rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;
9094  color:var(--dim);margin-bottom:16px;
9095}
9096.ev-ln-header-title{
9097  font-size:clamp(2rem,5vw,3.8rem);font-weight:700;letter-spacing:-.04em;
9098  line-height:1.05;margin-bottom:14px;
9099  font-family:Georgia,'Times New Roman',serif;
9100}
9101.ev-ln-header-sub{
9102  font-size:.96rem;color:var(--muted);max-width:480px;margin:0 auto 36px;line-height:1.75;
9103}
9104.ev-ln-search{
9105  display:flex;align-items:center;gap:10px;
9106  max-width:380px;margin:0 auto;
9107  border:1px solid var(--border);border-radius:100px;
9108  background:rgba(255,255,255,.03);padding:10px 18px;
9109  backdrop-filter:blur(8px);
9110  transition:border-color .2s;
9111}
9112.ev-ln-search:focus-within{border-color:rgba(255,255,255,.16)}
9113.ev-ln-search-icon{color:var(--dim);flex-shrink:0;font-size:.9rem}
9114.ev-ln-search input{
9115  background:none;border:none;outline:none;flex:1;
9116  font-size:.84rem;color:#fff;
9117}
9118.ev-ln-search input::placeholder{color:var(--dim)}
9119
9120/* ── Filter tabs ── */
9121.ev-ln-filters{
9122  position:relative;z-index:1;
9123  display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;
9124  padding:0 24px 40px;
9125}
9126.ev-ln-filter{
9127  padding:6px 14px;border-radius:100px;
9128  border:1px solid var(--border);background:transparent;
9129  font-size:.74rem;font-weight:500;color:var(--muted);
9130  cursor:pointer;transition:border-color .2s,color .2s,background .2s;
9131  white-space:nowrap;
9132}
9133.ev-ln-filter:hover,.ev-ln-filter.active{border-color:rgba(255,255,255,.22);color:#fff;background:rgba(255,255,255,.06)}
9134.ev-ln-filter.active{background:rgba(255,255,255,.1)}
9135
9136/* ── Grid ── */
9137.ev-ln-grid{
9138  position:relative;z-index:1;
9139  display:grid;
9140  grid-template-columns:repeat(auto-fill,minmax(320px,1fr));
9141  gap:12px;
9142  max-width:1100px;margin:0 auto;
9143  padding:0 24px 96px;
9144}
9145
9146/* ── Entity card ── */
9147.ev-ln-card{
9148  border-radius:20px;overflow:hidden;
9149  border:1px solid rgba(255,255,255,.07);
9150  transition:transform .35s var(--ease),border-color .3s,box-shadow .35s;
9151  position:relative;
9152}
9153.ev-ln-card::before{
9154  content:'';position:absolute;top:0;left:0;right:0;height:1px;
9155  background:linear-gradient(to right,transparent 8%,rgba(255,255,255,.14) 50%,transparent 92%);
9156  z-index:3;pointer-events:none;
9157}
9158.ev-ln-card:hover{transform:translateY(-4px);border-color:rgba(255,255,255,.13);box-shadow:0 16px 56px rgba(0,0,0,.65)}
9159.ev-ln-card[data-hidden="true"]{display:none}
9160
9161/* Card header strip — colored gradient */
9162.ev-ln-card-strip{height:5px;width:100%}
9163
9164/* Card body */
9165.ev-ln-card-body{
9166  padding:22px 22px 20px;
9167  background:rgba(10,10,20,.92);
9168  backdrop-filter:blur(8px);
9169}
9170
9171/* Card header row */
9172.ev-ln-card-hdr{display:flex;align-items:center;gap:14px;margin-bottom:16px}
9173.ev-ln-card-logo{
9174  width:48px;height:48px;border-radius:12px;overflow:hidden;
9175  background:rgba(255,255,255,.06);flex-shrink:0;
9176  display:flex;align-items:center;justify-content:center;
9177  border:1px solid rgba(255,255,255,.08);
9178}
9179.ev-ln-card-logo img{width:36px;height:36px;object-fit:contain;opacity:.85;filter:grayscale(.1)}
9180.ev-ln-card-info{min-width:0}
9181.ev-ln-card-name{font-size:1rem;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:Georgia,'Times New Roman',serif;letter-spacing:-.02em}
9182.ev-ln-card-native{font-size:.78rem;color:rgba(255,255,255,.36);margin-top:2px}
9183.ev-ln-card-lang{
9184  display:inline-block;padding:2px 9px;border-radius:100px;
9185  background:rgba(255,255,255,.05);
9186  font-size:.6rem;font-weight:600;color:rgba(255,255,255,.36);letter-spacing:.06em;text-transform:uppercase;
9187  margin-top:4px;
9188}
9189
9190/* Social links */
9191.ev-ln-socials{display:flex;flex-wrap:wrap;gap:7px}
9192.ev-ln-social-btn{
9193  display:inline-flex;align-items:center;gap:6px;
9194  padding:7px 13px;border-radius:9px;
9195  font-size:.74rem;font-weight:600;color:#fff;text-decoration:none;
9196  border:1px solid rgba(255,255,255,.06);
9197  background:rgba(255,255,255,.04);
9198  transition:transform .18s,background .2s,border-color .2s,box-shadow .2s;
9199  white-space:nowrap;
9200}
9201.ev-ln-social-btn:hover{transform:translateY(-1px);background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.15);box-shadow:0 4px 16px rgba(0,0,0,.4)}
9202.ev-ln-social-icon{width:14px;
9202height:14px;border-radius:3px;flex-shrink:0;display:inline-block}
9203.ev-ln-social-icon.sp-icon{background:#1DB954}
9204.ev-ln-social-icon.yt-icon{background:#FF0000}
9205.ev-ln-social-icon.ig-icon{background:linear-gradient(45deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888)}
9206.ev-ln-social-icon.tk-icon{background:#010101;border:1px solid rgba(255,255,255,.15)}
9207.ev-ln-social-icon.fb-icon{background:#1877F2}
9208.ev-ln-social-icon.dz-icon{background:#A238FF}
9209
9210/* Website link pill at bottom of card */
9211.ev-ln-card-site{
9212  display:flex;align-items:center;justify-content:space-between;
9213  margin-top:14px;padding-top:14px;
9214  border-top:1px solid rgba(255,255,255,.06);
9215  text-decoration:none;
9216  font-size:.76rem;color:var(--muted);
9217  transition:color .2s;
9218}
9219.ev-ln-card-site:hover{color:#fff}
9220.ev-ln-card-site-arrow{font-size:.9rem}
9221
9222/* ── Global section footer ── */
9223.ev-ln-section-footer{
9224  position:relative;z-index:1;
9225  text-align:center;padding:0 24px 80px;
9226}
9227.ev-ln-section-footer a{
9228  display:inline-flex;align-items:center;gap:8px;
9229  padding:13px 28px;border-radius:10px;
9230  background:#fff;color:#000;font-size:.88rem;font-weight:600;text-decoration:none;
9231  transition:opacity .2s,transform .15s;
9232}
9233.ev-ln-section-footer a:hover{opacity:.87;transform:translateY(-1px)}
9234
9235/* ── Footer ── */
9236.ev-ln-footer{
9237  position:relative;z-index:1;
9238  border-top:1px solid var(--border);
9239  padding:40px 24px;text-align:center;
9240}
9241.ev-ln-footer-copy{font-size:.72rem;color:var(--dim)}
9242.ev-ln-footer-links{display:flex;justify-content:center;gap:20px;margin-top:12px;flex-wrap:wrap}
9243.ev-ln-footer-links a{font-size:.72rem;color:var(--dim);text-decoration:none;transition:color .2s}
9244.ev-ln-footer-links a:hover{color:rgba(255,255,255,.75)}
9245
9246/* ── No-results state ── */
9247.ev-ln-empty{
9248  grid-column:1/-1;text-align:center;
9249  padding:60px 0;color:var(--muted);font-size:.9rem;
9250  display:none;
9251}
9252.ev-ln-empty.visible{display:block}
9253
9254/* ── Responsive ── */
9255@media(max-width:540px){
9256  .ev-ln-grid{grid-template-columns:1fr;gap:8px;padding:0 16px 80px}
9257  .ev-ln-header{padding:52px 20px 48px}
9258}
9259</style>
9260
9261<div class="ev-links-root">
9262
9263  <nav class="ev-ln-nav">
9264    <a href="https://echovira.com" class="ev-ln-logo">
9265      <div class="ev-logo-mark"><span></span><span></span><span></span><span></span></div>
9266      <span class="ev-logo-text">
9266EchoVira</span>
9267    </a>
9268    <a href="https://echovira.com" class="ev-ln-back">&#8592; Back to EchoVira</a>
9269  </nav>
9270
9271  <header class="ev-ln-header">
9272    <div class="ev-ln-header-eyebrow">Social Links</div>
9273    <h1 class="ev-ln-header-title">Find us everywhere.</h1>
9274    <p class="ev-ln-header-sub">All 12 labels &amp; EchoVira channels &mdash; Spotify, YouTube, Instagram, TikTok, Facebook &amp; Deezer.</p>
9275    <div class="ev-ln-search">
9276      <span class="ev-ln-search-icon">&#128269;</span>
9277      <input type="text" id="ev-ln-q" placeholder="Search labels..." autocomplete="off" spellcheck="false">
9278    </div>
9279  </header>
9280
9281  <div class="ev-ln-filters" id="ev-ln-filters">
9282    <button class="ev-ln-filter active" data-filter="all">All</button>
9283    <button class="ev-ln-filter" data-filter="labels">Labels</button>
9284    <button class="ev-ln-filter" data-filter="channels">EchoVira Channels</button>
9285    <button class="ev-ln-filter sp" data-filter="sp">Spotify</button>
9286    <button class="ev-ln-filter yt" data-filter="yt">YouTube</button>
9287    <button class="ev-ln-filter ig" data-filter="ig">Instagram</button>
9288    <button class="ev-ln-filter tk" data-filter="tk">TikTok</button>
9289  </div>
9290
9291  <div class="ev-ln-grid" id="ev-ln-grid">
9292    <div class="ev-ln-empty" id="ev-ln-empty">No matches found.</div>
9293  </div>
9294
9295  <div class="ev-ln-section-footer">
9296    <a href="https://echovira.com">
9297      Explore EchoVira
9298      <svg width="13" height="13" viewBox="0 0 13 13" fill="none"><path d="M2 6.5h9M7 2.5l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
9299    </a>
9300  </div>
9301
9302  <footer class="ev-ln-footer">
9303    <p class="ev-ln-footer-copy">Copyright &copy; 2025 EchoVira. All rights reserved.</p>
9304    <div class="ev-ln-footer-links">
9305      <a href="https://echovira.com">Home</a>
9306      <a href="https://mastering.echovira.com">Mastering</a>
9307      <a href="https://musicvideo.echovira.com">Music Video</a>
9308      <a href="https://gallery.echovira.com">Store</a>
9309      {/* /privacy-policy 404s on this host — the alias redirect is softflourish-only. The real page is /privacy (verified 200, 2026-08-18). */}
9310      <a href="https://echovira.com/privacy">Privacy</a>
9311    </div>
9312  </footer>
9313
9314</div>`;e.s(["EchoviraLinksPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=a.querySelector("#ev-ln-grid"),t=a.querySelector("#ev-ln-empty");if(!i)return;n.forEach(e=>{let a=e.slug.startsWith("echovira-"),t=document.createElement("div");t.className="ev-ln-card",t.dataset.name=e.name.toLowerCase(),t.dataset.lang=e.lang.toLowerCase(),t.dataset.type=a?"channel":"label",t.dataset.platforms=e.links.map(e=>e.icon).join(",");let s=e.links.map(e=>`<a href="${e.url}" target="_blank" rel="noopener noreferrer" class="ev-ln-social-btn">
9315          <span class="ev-ln-social-icon ${e.icon}-icon"></span>
9316          ${({sp:"Spotify",yt:"YouTube",ig:"Instagram",tk:"TikTok",fb:"Facebook",dz:"Deezer"})[e.icon]??e.platform}
9317        </a>`).join(""),n=e.slug,o=a?`${r}/echovira_logo_mark.png`:`${r}/${n}_logo.png`;t.innerHTML=`
9318        <div class="ev-ln-card-strip" style="background:${e.color}"></div>
9319        <div class="ev-ln-card-body">
9320          <div class="ev-ln-card-hdr">
9321            <div class="ev-ln-card-logo">
9322              <img src="${o}" alt="${e.name}" loading="lazy"
9323                onerror="this.style.display='none'">
9324            </div>
9325            <div class="ev-ln-card-info">
9326              <div class="ev-ln-card-name">${e.name}</div>
9327              ${e.native?`<div class="ev-ln-card-native">${e.native}</div>`:""}
9328              <div class="ev-ln-card-lang">${e.lang}</div>
9329            </div>
9330          </div>
9331          <div class="ev-ln-socials">${s}</div>
9332          <a href="${e.url}" target="_blank" rel="noopener noreferrer" class="ev-ln-card-site">
9333            <span>Visit ${e.name}</span>
9334            <span class="ev-ln-card-site-arrow">&#8599;</span>
9335          </a>
9336        </div>`,i.appendChild(t)});let s=a.querySelector("#ev-ln-q");s&&s.addEventListener("input",l);let o=a.querySelectorAll(".ev-ln-filter");function l(){let e=s?.value.toLowerCase().trim()??"",r=a?.querySelector(".ev-ln-filter.active")?.dataset.f
9336ilter??"all",n=i?.querySelectorAll(".ev-ln-card")??[],o=!1;n.forEach(a=>{let i=a.dataset.name??"",t=a.dataset.lang??"",s=a.dataset.type??"",n=a.dataset.platforms??"",l=!e||i.includes(e)||t.includes(e),c=!0;"labels"===r?c="label"===s:"channels"===r?c="channel"===s:"all"!==r&&(c=n.includes(r));let d=l&&c;a.dataset.hidden=d?"false":"true",d&&(o=!0)}),t&&t.classList.toggle("visible",!o)}o.forEach(e=>{e.addEventListener("click",()=>{o.forEach(e=>e.classList.remove("active")),e.classList.add("active"),l()})})},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{ref:e,dangerouslySetInnerHTML:{__html:(0,s.stripHtmlComments)(o)},suppressHydrationWarning:!0}),(0,a.jsx)(t.EchoviraThemeToggle,{})]})}])},621695,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n=`
9337    <link rel="preconnect" href="https://fonts.googleapis.com">
9338    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9339    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;700;900&family=Bebas+Neue&display=swap" rel="stylesheet">
9340    <style>
9341        .entry-title, .post-edit-link, .site-footer, .site-info, .site-header, .site-branding, header.header, .masthead, .page-title {
9342            display: none !important;
9343        }
9344
9345        .vc_row[data-vc-full-width], .wpb_column, .vc_column_container, .wpb_wrapper, .entry-content, .site-content-contain, #content, .site-content, .site, #page, main {
9346            width: 100% !important;
9347            max-width: 100% !important;
9348            padding: 0 !important;
9349            margin: 0 !important;
9350            margin-top: 0 !important;
9351            padding-top: 0 !important;
9352        }
9353
9354        :root {
9355            --ev-bg: #fafafa;
9356            --ev-fg: #2c2c2c;
9357            --primary-color: #1a1a1a;
9358            --frekans-red: #E30A17;
9359            --frekans-white: #ffffff;
9360            --frekans-dark: #0a0a0a;
9361            --white: #ffffff;
9362            --light-gray: #f5f5f5;
9363            --text-light: #ffffff;
9364            --text-dark: #2c2c2c;
9365            --background-dark: #0a0a0a;
9366            --background-light: #fafafa;
9367            --gradient-main: linear-gradient(135deg, #E30A17 0%, #8B0000 100%);
9368            --shadow-light: 0 2px 20px rgba(0,0,0,0.1);
9369            --shadow-heavy: 0 10px 40px rgba(0,0,0,0.2);
9370            --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
9371        }
9372
9373        * {
9374            margin: 0;
9375            padding: 0;
9376            box-sizing: border-box;
9377        }
9378
9379        body {
9380            font-family: 'Poppins', -apple-system, sans-serif;
9381            line-height: 1.8;
9382            color: var(--ev-fg);
9383            background: var(--ev-bg);
9384            overflow-x: hidden;
9385            margin: 0 !important;
9386            padding: 0 !important;
9387        }
9388
9389        body:not(.lang-tr) .lang-tr { display: none !important; }
9390        body:not(.lang-en) .lang-en { display: none !important; }
9391
9392        .lang-toggle {
9393            position: absolute;
9394            top: 20px;
9395            right: 20px;
9396            z-index: 1001;
9397            background: rgba(255,255,255,0.2);
9398            border-radius: 25px;
9399            padding: 8px;
9400            backdrop-filter: blur(10px);
9401        }
9402
9403        .lang-toggle button {
9404            background: transparent;
9405            border: none;
9406            padding: 8px 16px;
9407            cursor: pointer;
9408            font-weight: 700;
9409            border-radius: 20px;
9410            transition: var(--transition);
9411            font-size: 0.9rem;
9412            color: white;
9413        }
9414
9415        .lang-toggle button.active {
9416            background: var(--frekans-red);
9417            color: white;
9418        }
9419
9420        .main-nav {
9421            position: fixed;
9422            top: 0;
9423            left: 0;
9424            right: 0;
9425            background: rgba(10, 10, 10, 0.95);
9426            backdrop-filter: blur(20px);
9427            z-index: 1000;
9428            padding: 1rem 0;
9429            border-bottom: 1px solid rgba(227, 10, 23, 0.3);
9430        }
9431
9432        .nav-container {
9433            max-width: 1200px;
9434            margin: 0 auto;
9435            padding: 0 20px;
9436            /* .lang-toggle below is position:absolute over the top-right
9437               corner (188px wide at this breakpoint) and isn't part of this
9438               flex row, so nothing here reserves space for it — the last
9439               nav link rendered underneath it. */
9440            padding-right: 210px;
9441            display: flex;
9442            justify-content: space-between;
9443            align-items: center;
9444        }
9445
9446        .logo img { height: 50px; }
9447
9448        .nav-menu {
9449            display: flex;
9450            list-style: none;
9451            gap: 2rem;
9452        }
9453
9454        .nav-menu a {
9455            color: var(--text-light);
9456            text-decoration: none;
9457            font-weight: 700;
9458            transition: var(--transition);
9459        }
9460
9461        /* --frekans-red is 3.72:1 on the nav's near-black background
9462           (rgba(10,10,10,0.95)) — same lightened red as .video-link. */
9463        .nav-menu a:hover { color: #ea4751; }
9464
9465        .mobile-menu-toggle {
9466            display: none;
9467            background: none;
9468            border: none;
9469            color: var(--text-light);
9470            font-size: 1.5rem;
9471            cursor: pointer;
9472        }
9473
9474        .hero-section {
9475            min-height: 100vh;
9476            /* Lighter stop of --gradient-main (#E30A17) — worst case for the
9477               white hero text below, 4.86:1. Testing convention: the ADA
9478               crawler can't see gradients (only background-color), so it
9479               falls through to a white default and reports white-on-white
9480               unless a solid stand-in is declared here. */
9481            --ada-contrast-bg: #E30A17;
9482            background: var(--gradient-main);
9483            display: flex;
9484            align-items: center;
9485            justify-content: center;
9486            text-align: center;
9487            color: var(--text-light);
9488            position: relative;
9489            overflow: hidden;
9490        }
9491
9492        .hero-section::before {
9493            content: '';
9494            position: absolute;
9495            top: 0;
9496            left: 0;
9497            right: 0;
9498            bottom: 0;
9499            background: radial-gradient(circle at 50% 0%, rgba(255,255,255,0.1) 0%, transparent 50%);
9500        }
9501
9502        .hero-content {
9503            position: relative;
9504            z-index: 2;
9505            max-width: 900px;
9506            padding: 0 20px;
9507        }
9508
9509        .hero-title {
9510            font-family: 'Bebas Neue', sans-serif;
9511            font-size: clamp(3rem, 8vw, 6rem);
9512            margin-bottom: 1rem;
9513            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
9514            font-weight: 400;
9515            letter-spacing: 3px;
9516        }
9517
9518        .hero-subtitle {
9519            font-size: clamp(1rem, 2vw, 1.3rem);
9520            margin-bottom: 2rem;
9521            /* White is already only 4.86:1 on the gradient's lighter stop
9522               (#E30A17) — 0.9 opacity dropped that to 4.08:1. */
9523            line-height: 1.6;
9524        }
9525
9526        .cta-button {
9527            display: inline-block;
9528            padding: 18px 40px;
9529            background: white;
9530            color: var(--frekans-red);
9531            text-decoration: none;
9532            border-radius: 50px;
9533            font-weight: 700;
9534            font-size: 1.1rem;
9535            transition: var(--transition);
9536            box-shadow: var(--shadow-light);
9537        }
9538
9539        .cta-button:hover {
9540            transform: translateY(-3px);
9541            box-shadow: var(--shadow-heavy);
9542            background: var(--frekans-dark);
9543            color: white;
9544        }
9545
9546        .section {
9547            padding: 80px 0;
9548        }
9549
9550        .section-dark {
9551            background: var(--background-dark);
9552            color: var(--text-light);
9553        }
9554
9555        .container {
9556            max-width: 1200px;
9557            margin: 0 auto;
9558            padding: 0 20px;
9559        }
9560
9561        .section-title {
9562            text-align: center;
9563            font-size: 2.5rem;
9564            margin-bottom: 3rem;
9565            position: relative;
9566            font-family: 'Bebas Neue', sans-serif;
9567            font-weight: 400;
9568            letter-spacing: 2px;
9569        }
9570
9571        .section-title::after {
9572            content: '';
9573            position: absolute;
9574            bottom: -10px;
9575            left: 50%;
9576            transform: translateX(-50%);
9577            width: 80px;
9578            height: 3px;
9579            background: var(--frekans-red);
9580            border-radius: 2px;
9581        }
9582
9583        .about-content {
9584            max-width: 900px;
9585            margin: 0 auto;
9586            text-align: center;
9587            line-height: 2;
9588            font-size: 1.1rem;
9589        }
9590
9591        .about-content p {
9592            margin-bottom: 1.5rem;
9593        }
9594
9595        .artists-gallery {
9596            display: grid;
9597            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
9598            gap: 2.5rem;
9599            margin-top: 3rem;
9600        }
9601
9602        .artist-card {
9603            position: relative;
9604            cursor: pointer;
9605            transition: var(--transition);
9606            background: white;
9607            border-radius: 20px;
9608            overflow: hidden;
9609            box-shadow: var(--shadow-light);
9610            border: 2px solid transparent;
9611        }
9612
9613        .artist-card:hover {
9614            transform: translateY(-10px) scale(1.02);
9615            box-shadow: var(--shadow-heavy);
9616            border-color: var(--frekans-red);
9617        }
9618
9619        .artist-image-wrapper {
9620            position: relative;
9621            width: 100%;
9622            aspect-ratio: 1;
9623            overflow: hidden;
9624        }
9625
9626        .artist-image {
9627            width: 100%;
9628            height: 100%;
9629            object-fit: cover;
9630            transition: transform 0.5s ease;
9631        }
9632
9633        .artist-card:hover .artist-image {
9634            transform: scale(1.1);
9635        }
9636
9637        .artist-overlay {
9638            position: absolute;
9639            bottom: 0;
9640            left: 0;
9641            right: 0;
9642            background: linear-gradient(to top, rgba(0,0,0,0.9), transparent);
9643            padding: 2rem 1.5rem 1.5rem;
9644            color: white;
9645        }
9646
9647        .artist-stage-name {
9648            font-size: 1.5rem;
9649            font-weight: 900;
9650            margin-bottom: 0.3rem;
9651        }
9652
9653        .artist-role-badge {
9654            display: inline-block;
9655            background: var(--frekans-red);
9656            padding: 4px 12px;
9657            border-radius: 15px;
9658            font-size: 0.75rem;
9659            font-weight: 700;
9660            text-transform: uppercase;
9661            letter-spacing: 0.5px;
9662        }
9663
9664        .artist-real-name {
9665            font-size: 0.9rem;
9666            opacity: 0.8;
9667            margin-top: 0.5rem;
9668        }
9669
9670        .releases-grid, .videos-grid, .news-grid {
9671            display: grid;
9672            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
9673            gap: 2rem;
9674            margin-top: 3rem;
9675        }
9676
9677        .release-card, .video-card, .news-card {
9678            background: white;
9679            border-radius: 20px;
9680            overflow: hidden;
9681            box-shadow: var(--shadow-light);
9682            transition: var(--transition);
9683            border: 2px solid transparent;
9684        }
9685
9686        .section-dark .release-card,
9687        .section-dark .video-card,
9688        .section-dark .news-card {
9689            background: rgba(255,255,255,0.05);
9690            border-color: rgba(255,255,255,0.1);
9691        }
9692
9693        .release-card:hover, .video-card:hover, .news-card:hover {
9694            transform: translateY(-10px);
9695            box-shadow: var(--shadow-heavy);
9696            border-color: var(--frekans-red);
9697        }
9698
9699        .release-image, .video-embed, .news-image {
9700            position: relative;
9701            overflow: hidden;
9702            background: var(--gradient-main);
9703            display: flex;
9704            align-items: center;
9705            justify-content: center;
9706            color: white;
9707            font-size: 4rem;
9708        }
9709
9710        .release-image { 
9711            aspect-ratio: 1;
9712            position: relative;
9713        }
9714        
9715        .release-image img,
9716        .news-image img {
9717            width: 100%;
9718            height: 100%;
9719            object-fit: cover;
9720        }
9721
9722        .video-embed { 
9723            padding-bottom: 56.25%; 
9724            height: 0;
9725            position: relative;
9726        }
9727
9728        .video-embed iframe {
9729            position: absolute;
9730            top: 0;
9731            left: 0;
9732            width: 100%;
9733            height: 100%;
9734        }
9735
9736        .news-image { height: 200px; }
9737
9738        .release-info, .video-info, .news-content {
9739            padding: 1.5rem;
9740        }
9741
9742        .section-dark .release-info,
9743        .section-dark .video-info,
9744        .section-dark .news-content {
9745            color: var(--text-light);
9746        }
9747
9748        .release-title, .video-title, .news-title {
9749            font-size: 1.3rem;
9750            margin-bottom: 0.5rem;
9751            font-weight: 700;
9752            color: var(--text-dark);
9753        }
9754
9755        .section-dark .release-title,
9756        .section-dark .video-title,
9757        .section-dark .news-title {
9758            color: var(--text-light);
9759        }
9760
9761        .release-description, .news-excerpt {
9762            font-size: 0.95rem;
9763            color: #666;
9764            margin-bottom: 1rem;
9765            line-height: 1.6;
9766        }
9767
9768        .section-dark .release-description,
9769        .section-dark .news-excerpt {
9770            color: rgba(255,255,255,0.8);
9771        }
9772
9773        .streaming-links {
9774            display: flex;
9775            gap: 0.5rem;
9776            flex-wrap: wrap;
9777        }
9778
9779        .streaming-link {
9780            padding: 8px 15px;
9781            background: var(--frekans-red);
9782            color: white;
9783            text-decoration: none;
9784            border-radius: 20px;
9785            font-size: 0.8rem;
9786            font-weight: 700;
9787            transition: var(--transition);
9788            display: inline-block;
9789        }
9790
9791        .streaming-link:hover {
9792            background: var(--frekans-dark);
9793            transform: translateY(-2px);
9794        }
9795
9796        .video-link, .read-more {
9797            display: inline-block;
9798            margin-top: 1rem;
9799            color: var(--frekans-red);
9800            text-decoration: none;
9801            font-weight: 700;
9802            transition: var(--transition);
9803        }
9804
9805        .section-dark .video-link,
9806        .section-dark .read-more {
9807            /* --frekans-red is 3.72:1 on the dark video/news cards
9808               (rgba(255,255,255,0.05) over #0a0a0a) — needs 4.5:1. */
9809            color: #ea4751;
9810        }
9811
9812        .video-link:hover, .read-more:hover {
9813            color: var(--frekans-dark);
9814        }
9815
9816        .view-all-btn {
9817            text-align: center;
9818            margin-top: 3rem;
9819        }
9820
9821        .view-all-btn a {
9822            display: inline-block;
9823            padding: 15px 35px;
9824            background: var(--frekans-red);
9825            color: white;
9826            text-decoration: none;
9827            border-radius: 30px;
9828            font-weight: 700;
9829            transition: var(--transition);
9830        }
9831
9832        .view-all-btn a:hover {
9833            background: var(--frekans-dark);
9834            transform: translateY(-3px);
9835        }
9836
9837        .loading-message {
9838            grid-column: 1 / -1;
9839            text-align: center;
9840            padding: 3rem;
9841            font-size: 1.2rem;
9842            color: #999;
9843        }
9844
9845        .bio-page {
9846            display: none;
9847            min-height: 100vh;
9848            padding-top: 80px;
9849            background: var(--background-light);
9850        }
9851
9852        .bio-page.active {
9853            display: block;
9854        }
9855
9856        .bio-header {
9857            background: var(--gradient-main);
9858            padding: 3rem 0;
9859            color: white;
9860            text-align: center;
9861        }
9862
9863        .back-button {
9864            display: inline-block;
9865            padding: 10px 25px;
9866            background: rgba(255,255,255,0.2);
9867            color: white;
9868            text-decoration: none;
9869            border-radius: 25px;
9870            margin-bottom: 1rem;
9871            transition: var(--transition);
9872            font-weight: 700;
9873        }
9874
9875        .back-button:hover {
9876            background: rgba(255,255,255,0.3);
9877            transform: translateY(-2px);
9878        }
9879
9880        .bio-content {
9881            max-width: 1000px;
9882            margin: -50px auto 0;
9883            posi
9883tion: relative;
9884            z-index: 10;
9885            padding: 0 20px 60px;
9886        }
9887
9888        .bio-card {
9889            background: white;
9890            border-radius: 20px;
9891            overflow: hidden;
9892            box-shadow: var(--shadow-heavy);
9893        }
9894
9895        .bio-image-section {
9896            padding: 3rem;
9897            text-align: center;
9898            background: linear-gradient(135deg, #ffe6e6 0%, #ffcccc 100%);
9899        }
9900
9901        .bio-artist-image {
9902            width: 280px;
9903            height: 280px;
9904            border-radius: 50%;
9905            object-fit: cover;
9906            border: 6px solid white;
9907            box-shadow: var(--shadow-light);
9908        }
9909
9910        .bio-text-section {
9911            padding: 3rem;
9912        }
9913
9914        .bio-artist-title {
9915            text-align: center;
9916            margin-bottom: 2.5rem;
9917            padding-bottom: 2rem;
9918            border-bottom: 2px solid #f0f0f0;
9919        }
9920
9921        .bio-artist-title h1 {
9922            font-size: 2.8rem;
9923            margin-bottom: 0.8rem;
9924            font-family: 'Bebas Neue', sans-serif;
9925            color: var(--text-dark);
9926            font-weight: 400;
9927            letter-spacing: 2px;
9928        }
9929
9930        .bio-artist-title .stage-name {
9931            font-size: 1.4rem;
9932            color: var(--frekans-red);
9933            font-weight: 700;
9934            margin-bottom: 1rem;
9935        }
9936
9937        .bio-artist-title .role {
9938            display: inline-block;
9939            background: var(--frekans-red);
9940            color: white;
9941            padding: 10px 25px;
9942            border-radius: 25px;
9943            font-size: 1rem;
9944            font-weight: 700;
9945        }
9946
9947        .bio-description {
9948            line-height: 2;
9949            font-size: 1.1rem;
9950            color: var(--text-dark);
9951        }
9952
9953        .bio-description p {
9954            margin-bottom: 1.5rem;
9955            text-align: justify;
9956        }
9957
9958        .main-footer {
9959            background: var(--primary-color);
9960            color: var(--text-light);
9961            padding: 3rem 0 1rem;
9962            text-align: center;
9963        }
9964
9965        .social-links {
9966            display: flex;
9967            justify-content: center;
9968            gap: 1rem;
9969            margin-bottom: 2rem;
9970        }
9971
9972        .social-link {
9973            width: 50px;
9974            height: 50px;
9975            border-radius: 50%;
9976            background: var(--frekans-red);
9977            color: var(--text-light);
9978            display: flex;
9979            align-items: center;
9980            justify-content: center;
9981            text-decoration: none;
9982            font-size: 1.2rem;
9983            transition: var(--transition);
9984        }
9985
9986        .social-link:hover {
9987            background: var(--frekans-dark);
9988            transform: translateY(-3px);
9989        }
9990
9991        @media (max-width: 768px) {
9992            .mobile-menu-toggle { display: block; }
9993            /* Same absolute .lang-toggle overlap as desktop, but the
9994               hamburger is the only thing left of the flex row now (the
9995               dropdown menu below is position:fixed, out of flow) — a
9996               smaller reservation matches the smaller toggle here. */
9997            .nav-container { padding-right: 170px; }
9998            .lang-toggle { padding: 5px; }
9999            .lang-toggle button { padding: 6px 10px; font-size: 0.75rem; }
10000            .nav-menu {
10001                position: fixed;
10002                top: 70px;
10003                left: 0;
10004                right: 0;
10005                background: var(--primary-color);
10006                flex-direction: column;
10007                padding: 2rem;
10008                transform: translateY(-100%);
10009                opacity: 0;
10010                visibility: hidden;
10011                transition: var(--transition);
10012            }
10013            .nav-menu.active {
10014                transform: translateY(0);
10015                opacity: 1;
10016                visibility: visible;
10017            }
10018            .artists-gallery {
10019                grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
10020                gap: 1.5rem;
10021            }
10022            .releases-grid, .videos-grid, .news-grid {
10023                grid-template-columns: 1fr;
10024            }
10025            .bio-artist-image {
10026                width: 200px;
10027                height: 200px;
10028            }
10029            .bio-artist-title h1 {
10030                font-size: 2rem;
10031            }
10032            .bio-text-section {
10033                padding: 2rem 1.5rem;
10034            }
10035        }
10036    
10037    .ev-nw-badge{position:fixed;bottom:72px;right:20px;z-index:9999;display:inline-flex;align-items:center;gap:5px;padding:8px 14px;background:rgba(2,2,8,.9);border:1px solid rgba(255,255,255,.14);border-radius:100px;font-size:.68rem;font-weight:600;color:rgba(255,255,255,.55);text-decoration:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);letter-spacing:.06em;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}
10038.ev-nw-badge:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(2,2,8,.97)}
10039.ev-nw-badge-mark{width:14px;
10039height:14px;display:grid;grid-template-columns:1fr 1fr;gap:2px;flex-shrink:0}
10040.ev-nw-badge-mark span{background:currentColor;border-radius:2px;display:block}
10041  </style>
10042
10043<a href="https://echovira.com" class="ev-nw-badge" target="_blank" rel="noopener" title="EchoVira Music Network">
10044  <div class="ev-nw-badge-mark"><span></span><span></span><span></span><span></span></div>
10045  EchoVira
10046</a>
10047
10048<nav class="main-nav" id="mainNav">
10049    <div class="nav-container">
10050        <a href="#home" class="logo">
10051            <img src="https://media.echovira.com/echovira/frekans_logo.png" alt="Frekans"
10052                srcset="https://media.echovira.com/echovira/frekans_logo-400.webp 400w, https://media.echovira.com/echovira/frekans_logo-800.webp 800w, https://media.echovira.com/echovira/frekans_logo-full.webp 1024w"
10053                sizes="50px" width="1024" height="1024" decoding="async">
10054        </a>
10055        <ul class="nav-menu" id="navMenu">
10056            <li class="lang-tr"><a href="#home">Ana Sayfa</a></li>
10057            <li class="lang-tr"><a href="#about">Hakkımızda</a></li>
10058            <li class="lang-tr"><a href="#artists">Sanat\xe7ılar</a></li>
10059            <li class="lang-tr"><a href="#releases">Yayınlar</a></li>
10060            <li class="lang-tr"><a href="#videos">Videolar</a></li>
10061            <li class="lang-tr"><a href="#news">Haberler</a></li>
10062            <li class="lang-en"><a href="#home">Home</a></li>
10063            <li class="lang-en"><a href="#about">About</a></li>
10064            <li class="lang-en"><a href="#artists">Artists</a></li>
10065            <li class="lang-en"><a href="#releases">Releases</a></li>
10066            <li class="lang-en"><a href="#videos">Videos</a></li>
10067            <li class="lang-en"><a href="#news">News</a></li>
10068        </ul>
10069        <button class="mobile-menu-toggle" id="mobileToggle">☰</button>
10070    </div>
10071<div class="lang-toggle">
10072        <button onclick="window.setLanguage&&setLanguage('tr')" class="lang-btn-tr active" data-lang="tr">T\xfcrk\xe7e</button>
10073        <button onclick="window.setLanguage&&setLanguage('en')" class="lang-btn-en" data-lang="en">English</button>
10074    </div>
10075</nav>
10076
10077<span id="main-content" tabindex="-1"></span>
10078
10079<section class="hero-section" id="home">
10080    
10081    
10082    <div class="hero-content">
10083        <h1 class="hero-title">FREKANS</h1>
10084        <p class="hero-subtitle lang-tr">T\xfcrk M\xfczik Grubu | İndie Rock & Elektronik F\xfczyon | 12 Yetenekli Sanat\xe7ı | Uluslararası Prod\xfcksiyon</p>
10085        <p class="hero-subtitle lang-en">Turkish Music Band | Indie Rock & Electronic Fusion | 12 Talented Artists | International Production</p>
10086        <a href="#about" class="cta-button lang-tr">M\xfcziğimizi Keşfet</a>
10087        <a href="#about" class="cta-button lang-en">Discover Our Music</a>
10088    </div>
10089</section>
10090
10091<section class="section" id="about">
10092    <div class="container">
10093        <h2 class="section-title lang-tr">Frekans Hakkında</h2>
10094        <h2 class="section-title lang-en">About Frekans</h2>
10095        <div class="about-content">
10096            <p class="lang-tr">
10097                <strong>Frekans</strong> — sadece bir grup değil, <strong>\xe7ağdaş T\xfcrk m\xfcziğinin</strong> yeni dalgasını temsil eden bir kolektif. <strong>İndie rock melodileri</strong> ve <strong>geleneksel T\xfcrk m\xfczik unsurlarını</strong> modern <strong>elektronik m\xfczik</strong>, <strong>alternatif rock</strong> ve <strong>deneysel seslerle</strong> m\xfckemmel şekilde harmanlayarak k\xfclt\xfcrel sınırları aşan ve kalplere dokunan benzersiz bir ses yaratıyoruz.
10098            </p>
10099            <p class="lang-tr">
10100                12 yetenekli m\xfczisyenden oluşan — <strong>vokalistler</strong>, <strong>\xe7ok enstr\xfcmantalistler</strong>, <strong>besteciler ve s\xf6z yazarları</strong> — Frekans, \xe7ağdaş <strong>T\xfcrk m\xfcziğinin</strong> \xe7eşitliliğini ve yaratıcılığını temsil ediyor. <strong>İndie rock</strong>, <strong>elektronik m\xfczik</strong>, <strong>pop</strong>, <strong>soul</strong> ve <strong>alternatif m\xfczikten</strong> ilham alarak <strong>d\xfcnya standartlarında</strong> ve <strong>\xf6zg\xfcn T\xfcrk kimliğine</strong> sahip eserler \xfcretiyoruz.
10101            </p>
10102            <p class="lang-tr">
10103                İstanbul ve T\xfcrkiye genelindeki <strong>canlı performanslar</strong> ve <strong>m\xfczik festivallerinden</strong> t\xfcm streaming platformlarında (Spotify, Apple Music, YouTube Music) <strong>dijital alb\xfcmler</strong> ve <strong>single'lar</strong> yayınlamaya kadar, Frekans k\xfcresel yeniliği kucaklarken T\xfcrkiye'nin zengin m\xfczikal mirasına saygı duyan bir m\xfczikal miras inşa ediyor. Frekans — frekans demek, titreşim, enerji ve bağlantı demek.
10104            </p>
10105            
10106            <p class="lang-en">
10107                <strong>Frekans</strong> — more than just a band, Frekans represents a new wave of <strong>contemporary Turkish music</strong>. We perfectly blend <strong>indie rock melodies</strong> and <strong>traditional Turkish musical elements</strong> with modern <strong>electronic music</strong>, <strong>alternative rock</strong>, and <strong>experimental sounds</strong> to create a unique sound that transcends cultural boundaries and touches hearts.
10108            </p>
10109            <p class="lang-en">
10110                Formed by 12 talented musicians — <strong>vocalists</strong>, <strong>multi-instrumentalists</strong>, <strong>composers and lyricists</strong> — Frekans represents the diversity and creativity of contemporary <strong>Turkish music</strong>. We draw inspiration from <strong>indie rock</strong>, <strong>electronic music</strong>, <strong>pop</strong>, <strong>soul</strong>, and <strong>alternative music</strong> to produce works with <strong>world-class quality</strong> and <strong>authentic Turkish identity</strong>.
10111            </p>
10112            <p class="lang-en">
10113                From <strong>live performances</strong> and <strong>music festivals</strong> in Istanbul and across Turkey to releasing <strong>digital albums</strong> and <strong>singles</strong> on all streaming platforms (Spotify, Apple Music, YouTube Music), Frekans is building a musical legacy that honors Turkey's rich musical heritage while embracing global innovation. Frekans means frequency — vibration, energy, and connection.
10114            </p>
10115        </div>
10116    </div>
10117</section>
10118
10119<section class="section section-dark" id="artists">
10120    <div class="container">
10121        <h2 class="section-title lang-tr">Sanat\xe7ılar</h2>
10122        <h2 class="section-title lang-en">The Artists</h2>
10123        <div class="artists-gallery" id="artistsGallery">
10124<div class="artist-card" data-artist-id="aylin-aksoy" style="cursor:pointer">
10125            <div class="artist-image-wrapper">
10126                <img src="https://media.echovira.com/frekans/frekans_aylin_aksoy_female_singer_portrait_0.png" alt="Aylin Aksoy" class="artist-image"
10127                srcset="https://media.echovira.com/frekans/frekans_aylin_aksoy_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_aylin_aksoy_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_aylin_aksoy_female_singer_portrait_0-full.
10127webp 1024w"
10128                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
10129                <div class="artist-overlay">
10130                    <div class="artist-stage-name">Aylin</div>
10131                    <div class="artist-role-badge lang-tr">Kadın Vokal</div>
10132                    <div class="artist-role-badge lang-en">Female Singer</div>
10133                    <div class="artist-real-name">Aylin Aksoy • 23 yaş / years</div>
10134                </div>
10135            </div>
10136        </div><div class="artist-card" data-artist-id="baran-demir" style="cursor:pointer">
10137            <div class="artist-image-wrapper">
10138                <img src="https://media.echovira.com/frekans/frekans_baran_demir_male_singer_portrait_0.png" alt="Baran Demir" class="artist-image"
10139                srcset="https://media.echovira.com/frekans/frekans_baran_demir_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_baran_demir_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_baran_demir_male_singer_portrait_0-full.webp 1024w"
10140                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
10141                <div class="artist-overlay">
10142                    <div class="artist-stage-name">Baran</div>
10143                    <div class="artist-role-badge lang-tr">Erkek Vokal</div>
10144                    <div class="artist-role-badge lang-en">Male Singer</div>
10145                    <div class="artist-real-name">Baran Demir • 27 yaş / years</div>
10146                </div>
10147            </div>
10148        </div><div class="artist-card" data-artist-id="ceren-ozgur" style="cursor:pointer">
10149            <div class="artist-image-wrapper">
10150                <img src="https://media.echovira.com/frekans/frekans_ceren_ozgur_multi_instrumentalist_portrait_1.png" alt="Ceren Ozgur" class="artist-image"
10151                srcset="https://media.echovira.com/frekans/frekans_ceren_ozgur_multi_instrumentalist_portrait_1-400.webp 400w, https://media.echovira.com/frekans/frekans_ceren_ozgur_multi_instrumentalist_portrait_1-800.webp 800w, https://media.echovira.com/frekans/frekans_ceren_ozgur_multi_instrumentalist_portrait_1-full.webp 1024w"
10152                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
10153                <div class="artist-overlay">
10154                    <div class="artist-stage-name">Ceren</div>
10155                    <div class="artist-role-badge lang-tr">\xc7ok Enstr\xfcmantalist</div>
10156                    <div class="artist-role-badge lang-en">Multi-Instrumentalist</div>
10157                    <div class="artist-real-name">Ceren Ozgur • 25 yaş / years</div>
10158                </div>
10159            </div>
10160        </div><div class="artist-card" data-artist-id="deniz-kaya" style="cursor:pointer">
10161            <div class="artist-image-wrapper">
10162                <img src="https://media.echovira.com/frekans/frekans_deniz_kaya_male_singer_portrait_1.png" alt="Deniz Kaya" class="artist-image"
10163                srcset="https://media.echovira.com/frekans/frekans_deniz_kaya_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/frekans/frekans_deniz_kaya_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/frekans/frekans_deniz_kaya_male_singer_portrait_1-full.webp 1024w"
10164                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
10165                <div class="artist-overlay">
10166                    <div class="artist-stage-name">Deniz</div>
10167                    <div class="artist-role-badge lang-tr">Erkek Vokal</div>
10168                    <div class="artist-role-badge lang-en">Male Singer</div>
10169                    <div class="artist-real-name">Deniz Kaya • 25 yaş / years</div>
10170                </div>
10171            </div>
10172        </div><div class="artist-card" data-artist-id="derya-kaplan" style="cursor:pointer">
10173            <div class="artist-image-wrapper">
10174                <img src="https://media.echovira.com/frekans/frekans_derya_kaplan_female_singer_portrait_0.png" alt="Derya Kaplan" class="artist-image"
10175                srcset="https://media.echovira.com/frekans/frekans_derya_kaplan_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_derya_kaplan_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_derya_kaplan_female_singer_portrait_0-full.
10175webp 1024w"
10176                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
10177                <div class="artist-overlay">
10178                    <div class="artist-stage-name">Derya</div>
10179                    <div class="artist-role-badge lang-tr">Kadın Vokal</div>
10180                    <div class="artist-role-badge lang-en">Female Singer</div>
10181                    <div class="artist-real-name">Derya Kaplan • 27 yaş / years</div>
10182                </div>
10183            </div>
10184        </div><div class="artist-card" data-artist-id="elif-aydin" style="cursor:pointer">
10185            <div class="artist-image-wrapper">
10186                <img src="https://media.echovira.com/frekans/frekans_elif_aydin_female_singer_portrait_2.png" alt="Elif Aydin" class="artist-image"
10187                srcset="https://media.echovira.com/frekans/frekans_elif_aydin_female_singer_portrait_2-400.webp 400w, https://media.echovira.com/frekans/frekans_elif_aydin_female_singer_portrait_2-800.webp 800w, https://media.echovira.com/frekans/frekans_elif_aydin_female_singer_portrait_2-full.webp 1024w"
10188                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
10189                <div class="artist-overlay">
10190                    <div class="artist-stage-name">Elif</div>
10191                    <div class="artist-role-badge lang-tr">Kadın Vokal</div>
10192                    <div class="artist-role-badge lang-en">Female Singer</div>
10193                    <div class="artist-real-name">Elif Aydin • 24 yaş / years</div>
10194                </div>
10195            </div>
10196        </div><div class="artist-card" data-artist-id="emre-yildiz" style="cursor:pointer">
10197            <div class="artist-image-wrapper">
10198                <img src="https://media.echovira.com/frekans/frekans_emre_yildiz_male_singer_portrait_0.png" alt="Emre Yildiz" class="artist-image"
10199                srcset="https://media.echovira.com/frekans/frekans_emre_yildiz_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_emre_yildiz_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_emre_yildiz_male_singer_portrait_0-full.webp 1024w"
10200                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
10201                <div class="artist-overlay">
10202                    <div class="artist-stage-name">Emre</div>
10203                    <div class="artist-role-badge lang-tr">Erkek Vokal</div>
10204                    <div class="artist-role-badge lang-en">Male Singer</div>
10205                    <div class="artist-real-name">Emre Yildiz • 24 yaş / years</div>
10206                </div>
10207            </div>
10208        </div><div class="artist-card" data-artist-id="kaan-arslan" style="cursor:pointer">
10209            <div class="artist-image-wrapper">
10210                <img src="https://media.echovira.com/frekans/frekans_kaan_arslan_male_singer_portrait_1.png" alt="Kaan Arslan" class="artist-image"
10211                srcset="https://media.echovira.com/frekans/frekans_kaan_arslan_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/frekans/frekans_kaan_arslan_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/frekans/frekans_kaan_arslan_male_singer_portrait_1-full.webp 1024w"
10212                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
10213                <div class="artist-overlay">
10214                    <div class="artist-stage-name">Kaan</div>
10215                    <div class="artist-role-badge lang-tr">Erkek Vokal</div>
10216                    <div class="artist-role-badge lang-en">Male Singer</div>
10217                    <div class="artist-real-name">Kaan Arslan • 26 yaş / years</div>
10218                </div>
10219            </div>
10220        </div><div class="artist-card" data-artist-id="leyla-sancar" style="cursor:pointer">
10221            <div class="artist-image-wrapper">
10222                <img src="https://media.echovira.com/frekans/frekans_leyla_sancar_female_singer_portrait_0.png" alt="Leyla Sancar" class="artist-image"
10223                srcset="https://media.echovira.com/frekans/frekans_leyla_sancar_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_leyla_sancar_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_leyla_sancar_female_singer_portrait_0-full.
10223webp 1024w"
10224                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
10225                <div class="artist-overlay">
10226                    <div class="artist-stage-name">Leyla</div>
10227                    <div class="artist-role-badge lang-tr">Kadın Vokal</div>
10228                    <div class="artist-role-badge lang-en">Female Singer</div>
10229                    <div class="artist-real-name">Leyla Sancar • 26 yaş / years</div>
10230                </div>
10231            </div>
10232        </div><div class="artist-card" data-artist-id="mert-can" style="cursor:pointer">
10233            <div class="artist-image-wrapper">
10234                <img src="https://media.echovira.com/frekans/frekans_mert_can_male_singer_portrait_0.png" alt="Mert Can" class="artist-image"
10235                srcset="https://media.echovira.com/frekans/frekans_mert_can_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_mert_can_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_mert_can_male_singer_portrait_0-full.webp 1024w"
10236                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
10237                <div class="artist-overlay">
10238                    <div class="artist-stage-name">Mert</div>
10239                    <div class="artist-role-badge lang-tr">Erkek Vokal</div>
10240                    <div class="artist-role-badge lang-en">Male Singer</div>
10241                    <div class="artist-real-name">Mert Can • 23 yaş / years</div>
10242                </div>
10243            </div>
10244        </div><div class="artist-card" data-artist-id="selin-kara" style="cursor:pointer">
10245            <div class="artist-image-wrapper">
10246                <img src="https://media.echovira.com/frekans/frekans_selin_kara_female_singer_portrait_0.png" alt="Selin Kara" class="artist-image"
10247                srcset="https://media.echovira.com/frekans/frekans_selin_kara_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_selin_kara_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_selin_kara_female_singer_portrait_0-full.webp 1024w"
10248                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
10249                <div class="artist-overlay">
10250                    <div class="artist-stage-name">Selin</div>
10251                    <div class="artist-role-badge lang-tr">Kadın Vokal</div>
10252                    <div class="artist-role-badge lang-en">Female Singer</div>
10253                    <div class="artist-real-name">Selin Kara • 25 yaş / years</div>
10254                </div>
10255            </div>
10256        </div><div class="artist-card" data-artist-id="yasemin-erden" style="cursor:pointer">
10257            <div class="artist-image-wrapper">
10258                <img src="https://media.echovira.com/frekans/frekans_yasemin_erden_composer_lyricist_portrait_2.png" alt="Yasemin Erden" class="artist-image"
10259                srcset="https://media.echovira.com/frekans/frekans_yasemin_erden_composer_lyricist_portrait_2-400.webp 400w, https://media.echovira.com/frekans/frekans_yasemin_erden_composer_lyricist_portrait_2-800.webp 800w, https://media.echovira.com/frekans/frekans_yasemin_erden_composer_lyricist_portrait_2-full.webp 1024w"
10260                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
10261                <div class="artist-overlay">
10262                    <div class="artist-stage-name">Yasemin</div>
10263                    <div class="artist-role-badge lang-tr">Besteci/S\xf6z Yazarı</div>
10264                    <div class="artist-role-badge lang-en">Composer/Lyricist</div>
10265                    <div class="artist-real-name">Yasemin Erden • 27 yaş / years</div>
10266                </div>
10267            </div>
10268        </div>
10269</div>
10270    </div>
10271</section>
10272
10273<section class="section" id="releases">
10274    <div class="container">
10275        <h2 class="section-title lang-tr">Son Yayınlar</h2>
10276        <h2 class="section-title lang-en">Latest Releases</h2>
10277        <div class="releases-grid" id="releasesGrid">
10278        <div class="release-card">
10279            <div class="release-image">🎵</div>
10280            <div class="release-info">
10281                <h3 class="release-title lang-tr">Frekans - İlk Single</h3>
10282                <h3 class="release-title lang-en">Frekans - First Single</h3>
10283                <p class="release-description lang-tr">Frekans m\xfcziğini sosyal medyada dinleyin</p>
10284                <p class="release-description lang-en">Listen to Frekans music on social media</p>
10285                <div class="streaming-links">
10286                    <a href="https://www.youtube.com/@FrekansMusicBand" target="_blank" class="streaming-link">YouTube</a>
10287                    <a href="https://www.instagram.com/frekansmusicband/" target="_blank" class="streaming-link">Instagram</a>
10288                    <a href="https://www.tiktok.com/@frekansofficial" target="_blank" class="streaming-link">TikTok</a>
10289                </div>
10290            </div>
10291        </div>
10292    </div>
10293    </div>
10294</section>
10295
10296<section class="section section-dark" id="videos">
10297    <div class="container">
10298        <h2 class="section-title lang-tr">M\xfczik Videoları</h2>
10299        <h2 class="section-title lang-en">Music Videos</h2>
10300        <div class="videos-grid" id="videosGrid">
10301        <div class="video-card">
10302            <div class="video-embed">📹</div>
10303            <div class="video-info">
10304                <h3 class="video-title lang-tr">Frekans - M\xfczik Videosu</h3>
10305                <h3 class="video-title lang-en">Frekans - Music Video</h3>
10306                <p class="lang-tr">YouTube\\'da son m\xfczik videolarımızı ve canlı performanslarımızı izleyin</p>
10307                <p class="lang-en">Watch our latest music videos and live performances on YouTube</p>
10308                <a href="https://www.youtube.com/@FrekansMusicBand" target="_blank" class="video-link lang-tr">YouTube\\'da İzle →</a>
10309                <a href="https://www.youtube.com/@FrekansMusicBand" target="_blank" class="video-link lang-en">Watch on YouTube →</a>
10310            </div>
10311        </div>
10312        <div class="video-card">
10313            <div class="video-embed">🎬</div>
10314            <div class="video-info">
10315                <h3 class="video-title lang-tr">Kısa Videolar</h3>
10316                <h3 class="video-title lang-en">Short Videos</h3>
10317                <p class="lang-tr">TikTok ve Instagram\\'da arkası ve m\xfczik kliplerini takip edin</p>
10318                <p class="lang-en">Follow our behind-the-scenes and music clips on TikTok and Instagram</p>
10319                <a href="https://www.tiktok.com/@frekansofficial" target="_blank" class="video-link lang-tr">TikTok\\'ta İzle →</a>
10320                <a href="https://www.tiktok.com/@frekansofficial" target="_blank" class="video-link lang-en">Watch on TikTok →</a>
10321            </div>
10322        </div>
10323    </div>
10324        <div class="view-all-btn">
10325            <a href="https://www.youtube.com/@FrekansMusicBand" target="_blank" class="lang-tr">YouTube'da Daha Fazla</a>
10326            <a href="https://www.youtube.com/@FrekansMusicBand" target="_blank" class="lang-en">Watch More on YouTube</a>
10327        </div>
10328    </div>
10329</section>
10330
10331<section class="section" id="news">
10332    <div class="container">
10333        <h2 class="section-title lang-tr">Son Haberler</h2>
10334        <h2 class="section-title lang-en">Latest News</h2>
10335        <div class="news-grid" id="newsGrid">
10336        <div class="news-card">
10337            <div class="news-image">📰</div>
10338            <div class="news-content">
10339                <h3 class="news-title lang-tr">Frekans D\xfcnyasına Hoş Geldiniz</h3>
10340                <h3 class="news-title lang-en">Welcome to Frekans World</h3>
10341                <p class="news-excerpt lang-tr">Grup, yeni yayınlar ve canlı konserler hakkında en son haberleri sosyal medyadan takip edin</p>
10342                <p class="news-excerpt lang-en">Follow us on social media for latest news about the band, new releases, and live concerts</p>
10343                <a href="https://www.instagram.com/frekansmusicband/" target="_blank" class="read-more lang-tr">Instagram\\'da Takip Et →</a>
10344                <a href="https://www.instagram.com/frekansmusicband/" target="_blank" class="read-more lang-en">Follow on Instagram →</a>
10345            </div>
10346        </div>
10347        <div class="news-card">
10348            <div class="news-image">🎤</div>
10349            <div class="news-content">
10350                <h3 class="news-title lang-tr">Sanat\xe7ılarla Tanışın</h3>
10351                <h3 class="news-title lang-en">Meet the Artists</h3>
10352                <p class="news-excerpt lang-tr">12 sanat\xe7ımızın hikayelerini keşfedin ve prova ve konser anlarını sayfalarımızda izleyin</p>
10353                <p class="news-excerpt lang-en">Discover the stories of our 12 artists and watch rehearsal and concert moments on our pages</p>
10354                <a href="https://facebook.com/frekansmusicband" target="_blank" class="read-more lang-tr">Sayfamızı Ziyaret Et →</a>
10355                <a href="https://facebook.com/frekansmusicband" target="_blank" class="read-more lang-en">Visit Our Page →</a>
10356            </div>
10357        </div>
10358    </div>
10359    </div>
10360</section>
10361
10362<footer class="main-footer">
10363    <div class="container">
10364        <div class="social-links">
10365            <a href="https://www.youtube.com/@FrekansMusicBand" target="_blank" class="social-link">▶</a>
10366            <a href="https://www.instagram.com/frekansmusicband/" target="_blank" class="social-link">📷</a>
10367            <a href="https://www.tiktok.com/@frekansofficial" target="_blank" class="social-link">🎵</a>
10368            <a href="https://facebook.com/frekansmusicband" target="_blank" class="social-link">👥</a>
10369        </div>
10370        <p class="lang-tr">&copy; 2025 Frekans. T\xfcm hakları saklıdır.</p>
10371        <p class="lang-en">&copy; 2025 Frekans. All rights reserved.</p>
10372    </div>
10373</footer>
10374
10375
10376
10377
10378<div id="bioPages">
10379<div id="bio-aylin-aksoy" class="bio-page">
10380            <div class="bio-header">
10381                <div class="container">
10382                    <a href="#artists" data-action="back" class="back-button lang-tr">← Sanat\xe7ılara D\xf6n</a>
10383                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
10384                </div>
10385            </div>
10386            
10387            <div class="bio-content">
10388                <div class="bio-card">
10389                    <div class="bio-image-section">
10390                        <img src="https://media.echovira.com/frekans/frekans_aylin_aksoy_female_singer_portrait_0.png" alt="Aylin Aksoy" class="bio-artist-image"
10391                srcset="https://media.echovira.com/frekans/frekans_aylin_aksoy_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_aylin_aksoy_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_aylin_aksoy_female_singer_portrait_0-full.
10391webp 1024w"
10392                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
10393                    </div>
10394                    <div class="bio-text-section">
10395                        <div class="bio-artist-title">
10396                            <h1>Aylin Aksoy</h1>
10397                            <div class="stage-name">"Aylin" • 23 yaş / years</div>
10398                            <div class="role lang-tr">Kadın Vokal</div>
10399                            <div class="role lang-en">Female Singer</div>
10400                        </div>
10401                        <div class="bio-description lang-tr">
10402                            <p>Tanıtıyoruz: Aylin Aksoy (sahne adı Aylin) — Frekans'ın 23 yaşındaki kadın vokali, parlak ve neşeli vokalleriyle sahneyi aydınlatıyor! Sesi parlak, enerji dolu ve dinleyeni anında yakalayan tınısı sayesinde hem melodiyi hem şarkının ruhunu taşıyor.</p><p>Aylin'in temiz \xfcst register'ı ve sıcak orta tonları gruba aydınlık bir lider ses veriyor; dinamik kontrol\xfc ve oyuncu fraze yapısı hem samimi pasajları hem de b\xfcy\xfck koroları şekillendiriyor. Sahne zamanlaması ve pop ve indie etkilerine stilistik g\xf6ndermeler, grubu bunaltmadan fraze yapısını geliştirir.</p><p>Frekans'ın sound'una Aylin'in sıcaklığı ve dinamizmi y\xf6n veriyor; yeni par\xe7alarımızda onun yeteneğini g\xf6receksiniz — yorum bırakın, bizi takip edin ve yeni single'ı dinlemeye hazır olun!</p>
10403                        </div>
10404                        <div class="bio-description lang-en">
10405                            <p>Meet Aylin Aksoy (stage name: Aylin), 23 — Frekans' new female singer. She sings with a bright, light timbre and cheerful phrasing that lifts the melodies.</p><p>Aylin's clear upper register and warm middle tones give the band a luminous lead sound; her dynamic control and playful phrasing shape both intimate passages and big choruses. Her sense of timing and stylistic nods to pop and indie influences enhance phrasing without overpowering the group.</p><p>On stage she combines poised presence with energetic interaction, turning grooves into sing-along moments that raise the whole band's live energy.</p>
10406                        </div>
10407                    </div>
10408                </div>
10409            </div>
10410        </div>
10411<div id="bio-baran-demir" class="bio-page">
10412            <div class="bio-header">
10413                <div class="container">
10414                    <a href="#artists" data-action="back" class="back-button lang-tr">← Sanat\xe7ılara D\xf6n</a>
10415                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
10416                </div>
10417            </div>
10418            
10419            <div class="bio-content">
10420                <div class="bio-card">
10421                    <div class="bio-image-section">
10422                        <img src="https://media.echovira.com/frekans/frekans_baran_demir_male_singer_portrait_0.png" alt="Baran Demir" class="bio-artist-image"
10423                srcset="https://media.echovira.com/frekans/frekans_baran_demir_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_baran_demir_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_baran_demir_male_singer_portrait_0-full.webp 1024w"
10424                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
10425                    </div>
10426                    <div class="bio-text-section">
10427                        <div class="bio-artist-title">
10428                            <h1>Baran Demir</h1>
10429                            <div class="stage-name">"Baran" • 27 yaş / years</div>
10430                            <div class="role lang-tr">Erkek Vokal</div>
10431                            <div class="role lang-en">Male Singer</div>
10432                        </div>
10433                        <div class="bio-description lang-tr">
10434                            <p>Tanışın: Baran Demir (Baran) — 27 yaşında, Frekans'ın erkek vokali; ruh dolu, derin sesi ve duygusal yorumuyla sahneye enerji katıyor. Sahnedeki yorumu i\xe7ten, g\xfc\xe7l\xfc ve dokunaklı; her notada hik\xe2ye anlatıyor.</p><p>Frekans'ın baş vokali olarak sıcak, rezonant tınısı, geniş aralığı, d\xfcş\xfcnceli fraze yapısı ve dinamik kontrol\xfc her şarkıya insan merkezi veriyor; indie, soul ve alternatif etkilerle şekillendirilen sahne varlığıyla. Fraze yapısı ve mikro-dinamikler basit melodileri unutulmaz anlara d\xf6n\xfcşt\xfcr\xfcyor.</p><p>Baran'ın vokali grubun sound'una sıcaklık, g\xfc\xe7 ve melodik renkler katıyor; yorumundaki duygu ve dinamik aralık Frekans şarkılarını farklı bir seviyeye taşıyor. Yakında \xe7ıkacak yeni par\xe7alarımız onun sesini \xf6n plana \xe7ıkaracak!</p>
10435                        </div>
10436                        <div class="bio-description lang-en">
10437                            <p>Meet Baran — the new voice of Frekans. 27-year-old Baran Demir brings a soulful, deep voice and intensely emotional delivery.</p><p>As Frekans' lead vocalist his warm, resonant timbre, broad range, thoughtful phrasing and dynamic control give each song a human center, with stage presence shaped by indie, soul and alternative influences. His phrasing and micro-dynamics turn simple melodies into memorable moments.</p><p>On stage, that vocal focus drives the band's arrangements and gives live shows a raw, magnetic energy that pulls the crowd in.</p>
10438                        </div>
10439                    </div>
10440                </div>
10441            </div>
10442        </div>
10443<div id="bio-ceren-ozgur" class="bio-page">
10444            <div class="bio-header">
10445                <div class="container">
10446                    <a href="#artists" data-action="back" class="back-button lang-tr">← Sanat\xe7ılara D\xf6n</a>
10447                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
10448                </div>
10449            </div>
10450            
10451            <div class="bio-content">
10452                <div class="bio-card">
10453                    <div class="bio-image-section">
10454                        <img src="https://media.echovira.com/frekans/frekans_ceren_ozgur_multi_instrumentalist_portrait_1.png" alt="Ceren Ozgur" class="bio-artist-image"
10455                srcset="https://media.echovira.com/frekans/frekans_ceren_ozgur_multi_instrumentalist_portrait_1-400.webp 400w, https://media.echovira.com/frekans/frekans_ceren_ozgur_multi_instrumentalist_portrait_1-800.webp 800w, https://media.echovira.com/frekans/frekans_ceren_ozgur_multi_instrumentalist_portrait_1-full.
10455webp 1024w"
10456                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
10457                    </div>
10458                    <div class="bio-text-section">
10459                        <div class="bio-artist-title">
10460                            <h1>Ceren Ozgur</h1>
10461                            <div class="stage-name">"Ceren" • 25 yaş / years</div>
10462                            <div class="role lang-tr">\xc7ok Enstr\xfcmantalist</div>
10463                            <div class="role lang-en">Multi-Instrumentalist</div>
10464                        </div>
10465                        <div class="bio-description lang-tr">
10466                            <p>Ceren (Ceren Ozgur) — Frekans'ın 25 yaşındaki \xe7ok enstr\xfcmantalisti, sihirli elleriyle grup sesine y\xf6n veriyor. Gitar, klavye ve daha fazlasında ustalaşmış; teknik h\xe2kimiyeti ve canlı performans enerjisi şarkılarımıza derinlik ve dokunuş katıyor.</p><p>Vokalist olarak sıcak bir tını, geniş aralık ve ifadeli fraze kullanıyor, duygusal zirveleri y\xfckseltmek i\xe7in dinamikler ve ince tonlamaya yaslanıyor. Enstr\xfcmantalist olarak enstr\xfcmanlarda hassas teknik, net artik\xfclasyon ve sabit bir cep dengesi kuruyor.</p><p>Yeni par\xe7alarımızda Ceren'in yaratıcılığını ve enstr\xfcmantal becerilerini daha g\xfc\xe7l\xfc hissedeceksiniz — heyecanlı olun! Takip edin, yorum bırakın ve en yeni kayıtlarımızı ka\xe7ırmayın!</p>
10467                        </div>
10468                        <div class="bio-description lang-en">
10469                            <p>Meet Ceren Ozgur (stage name: Ceren), 25 — Frekans' multi-instrumentalist with a fearless, cool presence. Her multi-instrumental role shapes Frekans' sound with layered textures, tight grooves and an onstage focus that lifts every performance.</p><p>As a vocalist she uses a warm timbre, wide range and expressive phrasing, leaning on dynamics and subtle inflection to heighten emotional peaks. As an instrumentalist she balances precise technique, clear articulation and a steady pocket across instruments.</p><p>As a composer she crafts memorable melodies, thoughtful harmonic turns and concise arrangements that push the band forward.</p>
10470                        </div>
10471                    </div>
10472                </div>
10473            </div>
10474        </div>
10475<div id="bio-deniz-kaya" class="bio-page">
10476            <div class="bio-header">
10477                <div class="container">
10478                    <a href="#artists" data-action="back" class="back-button lang-tr">← Sanat\xe7ılara D\xf6n</a>
10479                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
10480                </div>
10481            </div>
10482            
10483            <div class="bio-content">
10484                <div class="bio-card">
10485                    <div class="bio-image-section">
10486                        <img src="https://media.echovira.com/frekans/frekans_deniz_kaya_male_singer_portrait_1.png" alt="Deniz Kaya" class="bio-artist-image"
10487                srcset="https://media.echovira.com/frekans/frekans_deniz_kaya_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/frekans/frekans_deniz_kaya_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/frekans/frekans_deniz_kaya_male_singer_portrait_1-full.webp 1024w"
10488                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
10489                    </div>
10490                    <div class="bio-text-section">
10491                        <div class="bio-artist-title">
10492                            <h1>Deniz Kaya</h1>
10493                            <div class="stage-name">"Deniz" • 25 yaş / years</div>
10494                            <div class="role lang-tr">Erkek Vokal</div>
10495                            <div class="role lang-en">Male Singer</div>
10496                        </div>
10497                        <div class="bio-description lang-tr">
10498                            <p>Tanışın: Deniz Kaya (sahne adı Deniz) — Frekans'ın 25 yaşındaki solisti, g\xfc\xe7l\xfc ve sıcak sesiyle grubun kalbini taşıyor. \xc7ok y\xf6nl\xfc bir vokalist; yumuşak tınısı, sıcak sahne varlığı ve enerjik yorumu şarkılarımıza yeni boyutlar katıyor.</p><p>Deniz'in fraze yapısı ve dinamik kontrol\xfc Frekans'ın katmanlı sesini tanımlamaya yardımcı oluyor ve canlı şovlarımıza hem g\xfc\xe7 hem de yakınlık veriyor. Orta-\xfcst aralıkta rahat\xe7a oturan tınısı, net fraze yapısı, ince vibrato ve soul ile modern pop etkilerine sahip.</p><p>Deniz'in vokal zekası ve ifade g\xfcc\xfc, Frekans'ın canlı, duygulu sound'una y\xf6n veriyor; her nakaratta hik\xe2ye anlatıyor. Takip edin, yorum bırakın ve yakında \xe7ıkacak tekli/m\xfczik yayınlarımızı ka\xe7ırmayın!</p>
10499                        </div>
10500                        <div class="bio-description lang-en">
10501                            <p>Meet Deniz Kaya — Deniz, the new voice of Frekans. At 25, he joins as the band's male singer. He is a versatile vocalist with a smooth tone and a warm stage presence.</p><p>Deniz's phrasing and dynamic control help define Frekans' layered sound and give our live shows both drive and intimacy. On stage his confident delivery and fluid transitions lift arrangements, making quiet moments as compelling as climaxes.</p><p>His timbre sits comfortably in the mid-to-upper range with clear phrasing, subtle vibrato, and influences from soul and modern pop.</p>
10502                        </div>
10503                    </div>
10504                </div>
10505            </div>
10506        </div>
10507<div id="bio-derya-kaplan" class="bio-page">
10508            <div class="bio-header">
10509                <div class="container">
10510                    <a href="#artists" data-action="back" class="back-button lang-tr">← Sanat\xe7ılara D\xf6n</a>
10511                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
10512                </div>
10513            </div>
10514            
10515            <div class="bio-content">
10516                <div class="bio-card">
10517                    <div class="bio-image-section">
10518                        <img src="https://media.echovira.com/frekans/frekans_derya_kaplan_female_singer_portrait_0.png" alt="Derya Kaplan" class="bio-artist-image"
10519                srcset="https://media.echovira.com/frekans/frekans_derya_kaplan_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_derya_kaplan_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_derya_kaplan_female_singer_portrait_0-full.
10519webp 1024w"
10520                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
10521                    </div>
10522                    <div class="bio-text-section">
10523                        <div class="bio-artist-title">
10524                            <h1>Derya Kaplan</h1>
10525                            <div class="stage-name">"Derya" • 27 yaş / years</div>
10526                            <div class="role lang-tr">Kadın Vokal</div>
10527                            <div class="role lang-en">Female Singer</div>
10528                        </div>
10529                        <div class="bio-description lang-tr">
10530                            <p>Derya Kaplan (sahne adı: Derya), 27, Frekans'ın g\xfc\xe7l\xfc kadın vokali — sahnede yoğun yıldız enerjisiyle parlıyor. Temiz, duygulu ve y\xfckselen notalardaki kontrol\xfcyle sesi Frekans'ın sound'una modern ve vurucu bir imza ekliyor.</p><p>Frekans'ın baş vokali olarak sıcak, rezonant bir tını, geniş bir aralık ve samimi fısıltılardan cesur crescendolara kadar hareket eden hassas fraze getiriyor; indie-pop ve alternatif soul etkilerinden şekillenmiş. Dinamik kontrol\xfc ve odaklı sunumu grubun melodik kimliğini şekillendiriyor.</p><p>Yaklaşan şarkılarımızda Derya'nın vokal dinamizmini, sahne ateşini ve duygusal derinliğini daha fazla hissedeceksiniz — takip edin, yorum bırakın ve bu y\xfckselişe ortak olun!</p>
10531                        </div>
10532                        <div class="bio-description lang-en">
10533                            <p>Meet Derya Kaplan — Derya, 27, the female singer of Frekans. Her artistry: intense starlet energy — luminous, fearless vocal presence.</p><p>As Frekans' lead vocalist she brings a warm, resonant timbre, a broad range and precise phrasing that moves from intimate whispers to bold crescendos, shaped by indie-pop and alternative soul influences.</p><p>Her dynamic control and focused delivery shape the band's melodic identity and push arrangements toward cinematic peaks. On stage she translates studio nuance into contagious live energy.</p>
10534                        </div>
10535                    </div>
10536                </div>
10537            </div>
10538        </div>
10539<div id="bio-elif-aydin" class="bio-page">
10540            <div class="bio-header">
10541                <div class="container">
10542                    <a href="#artists" data-action="back" class="back-button lang-tr">← Sanat\xe7ılara D\xf6n</a>
10543                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
10544                </div>
10545            </div>
10546            
10547            <div class="bio-content">
10548                <div class="bio-card">
10549                    <div class="bio-image-section">
10550                        <img src="https://media.echovira.com/frekans/frekans_elif_aydin_female_singer_portrait_2.png" alt="Elif Aydin" class="bio-artist-image"
10551                srcset="https://media.echovira.com/frekans/frekans_elif_aydin_female_singer_portrait_2-400.webp 400w, https://media.echovira.com/frekans/frekans_elif_aydin_female_singer_portrait_2-800.webp 800w, https://media.echovira.com/frekans/frekans_elif_aydin_female_singer_portrait_2-full.webp 1024w"
10552                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
10553                    </div>
10554                    <div class="bio-text-section">
10555                        <div class="bio-artist-title">
10556                            <h1>Elif Aydin</h1>
10557                            <div class="stage-name">"Elif" • 24 yaş / years</div>
10558                            <div class="role lang-tr">Kadın Vokal</div>
10559                            <div class="role lang-en">Female Singer</div>
10560                        </div>
10561                        <div class="bio-description lang-tr">
10562                            <p>Tanışın: Frekans'ın 24 yaşındaki g\xfcc\xfc, sahnenin vokal krali\xe7esi Elif Aydin (sahne adı: Elif) — powerhouse diva, y\xfckselen vokallerle kalpleri fethediyor! Sıcak ama etkileyici tınısı, geniş aralığı ve sahnedeki coşkulu enerjisi Frekans'ın sound'una karakter katıyor.</p><p>Frekans'ın vokali olarak sıcak, rezonant bir tını, geniş aralık, hassas fraze ve ince dinamik kontrol getiriyor; soul ve indie etkilerinden besleniyor. Fraze yapısı ve vurgusu k\xfc\xe7\xfck motifleri doruk anlarına d\xf6n\xfcşt\xfcr\xfcrken, aralığı d\xfczenlemelerin nefes almasına veya y\xfckselmesine izin veriyor.</p><p>Yeni şarkılarımızda Elif'in t\xfcyleri diken diken eden vokalleri elektronik-rock dokusunu daha da g\xfc\xe7lendirecek; yakında \xe7ıkış yapıyoruz — bizi takip edin ve ilk dinleyenlerde
10562n olun!</p>
10563                        </div>
10564                        <div class="bio-description lang-en">
10565                            <p>Meet Elif Aydin — Elif, 24, the new vocal force in Frekans. Her commanding lead and soaring, expressive vocals reshape the band's sound and live energy.</p><p>As Frekans' vocalist she brings a warm, resonant timbre, a broad range, precise phrasing and fine dynamic control, drawing on soul and indie influences. Her phrasing and emphasis turn small motifs into climactic moments.</p><p>On stage she balances intensity with openness, turning tight grooves into full-band moments and lifting the crowd. In the studio she helps shape vocal layers and harmonies that give Frekans their distinctive sonic identity.</p>
10566                        </div>
10567                    </div>
10568                </div>
10569            </div>
10570        </div>
10571<div id="bio-emre-yildiz" class="bio-page">
10572            <div class="bio-header">
10573                <div class="container">
10574                    <a href="#artists" data-action="back" class="back-button lang-tr">← Sanat\xe7ılara D\xf6n</a>
10575                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
10576                </div>
10577            </div>
10578            
10579            <div class="bio-content">
10580                <div class="bio-card">
10581                    <div class="bio-image-section">
10582                        <img src="https://media.echovira.com/frekans/frekans_emre_yildiz_male_singer_portrait_0.png" alt="Emre Yildiz" class="bio-artist-image"
10583                srcset="https://media.echovira.com/frekans/frekans_emre_yildiz_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_emre_yildiz_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_emre_yildiz_male_singer_portrait_0-full.webp 1024w"
10584                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
10585                    </div>
10586                    <div class="bio-text-section">
10587                        <div class="bio-artist-title">
10588                            <h1>Emre Yildiz</h1>
10589                            <div class="stage-name">"Emre" • 24 yaş / years</div>
10590                            <div class="role lang-tr">Erkek Vokal</div>
10591                            <div class="role lang-en">Male Singer</div>
10592                        </div>
10593                        <div class="bio-description lang-tr">
10594                            <p>Tanışın: Emre Yıldız (sahne adı Emre), Frekans'ın 24 yaşındaki enerjik erkek vokali — falsetto ve cazibeyle dolu, upbeat sesi! Dinamizmi ve duygusal tınılarıyla Frekans'ın sound'una canlılık katıyor; sahnede hem g\xfc\xe7l\xfc hem ince katmanlar yaratıyor.</p><p>Aydınlık melodik enerjiyi grubun sesine getiren parlak bir falsetto ve sıcak, ilgi \xe7ekici bir \xe7ekiciliğe sahip neşeli bir şarkıcı. Vokal \xe7izgileri unutulmaz kancalar ve Frekans'ın dinamiklerini ve sahne s\xfcr\xfcc\xfcs\xfcn\xfc yeniden şekillendiren canlı momentum ekliyor.</p><p>Yeni single'larımızda Emre'nin vokalini ve karakterini duyacaksınız — hemen bizi takip edin ve g\xf6r\xfcşlerinizi yorumlarda paylaşın!</p>
10595                        </div>
10596                        <div class="bio-description lang-en">
10597                            <p>Meet Emre — the 24-year-old male singer stepping up as the new voice of Frekans. His falsetto lifts every chorus and pulls the crowd in.</p><p>An upbeat singer with a luminous falsetto and a warm, engaging charm, Emre brings bright melodic energy to the band's sound. His vocal lines add memorable hooks and live momentum that reshape Frekans' dynamics and stage drive.</p><p>As the band's vocalist, his clear timbre, wide range, expressive phrasing and controlled dynamics give songs a strong emotional arc.</p>
10598                        </div>
10599                    </div>
10600                </div>
10601            </div>
10602        </div>
10603<div id="bio-kaan-arslan" class="bio-page">
10604            <div class="bio-header">
10605                <div class="container">
10606                    <a href="#artists" data-action="back" class="back-button lang-tr">← Sanat\xe7ılara D\xf6n</a>
10607                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
10608                </div>
10609            </div>
10610            
10611            <div class="bio-content">
10612                <div class="bio-card">
10613                    <div class="bio-image-section">
10614                        <img src="https://media.echovira.com/frekans/frekans_kaan_arslan_male_singer_portrait_1.png" alt="Kaan Arslan" class="bio-artist-image"
10615                srcset="https://media.echovira.com/frekans/frekans_kaan_arslan_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/frekans/frekans_kaan_arslan_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/frekans/frekans_kaan_arslan_male_singer_portrait_1-full.
10615webp 1024w"
10616                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
10617                    </div>
10618                    <div class="bio-text-section">
10619                        <div class="bio-artist-title">
10620                            <h1>Kaan Arslan</h1>
10621                            <div class="stage-name">"Kaan" • 26 yaş / years</div>
10622                            <div class="role lang-tr">Erkek Vokal</div>
10623                            <div class="role lang-en">Male Singer</div>
10624                        </div>
10625                        <div class="bio-description lang-tr">
10626                            <p>Tanıtıyoruz: Kaan Arslan (sahne adı Kaan) — Frekans'ın 26 yaşındaki erkek vokali; enerjik, karizmatik, etkileyici bir sese sahip. Sahnedeki karizması ve kitleleri coşturan enerjisiyle her performansta dinleyiciyi i\xe7ine \xe7eker.</p><p>Frekans'ın erkek şarkıcısı olarak grubun sesini sabitleştiriyor, şarkıları odaklanmış enerjiyle topluluk canlı anlarına d\xf6n\xfcşt\xfcr\xfcyor. Fraze yapısı ve dinamik kontrol\xfc d\xfczenlemeleri kaldırırken sahne ilişkisi odayı y\xf6nlendiriyor.</p><p>Vokali grubun sound'una sıcaklık, g\xfc\xe7 ve melodik renkler katıyor; yorumundaki duygu ve dinamik aralık Frekans şarkılarını farklı bir seviyeye taşıyor. Yakında \xe7ıkacak yeni par\xe7alarımız onun sesini \xf6n plana \xe7ıkaracak!</p>
10627                        </div>
10628                        <div class="bio-description lang-en">
10629                            <p>Meet Kaan Arslan — Kaan, the 26-year-old frontman of Frekans. A crowd-pleasing presence with natural charisma and a voice that connects.</p><p>As Frekans' male singer he anchors the band's sound, turning songs into communal live moments with focused energy. His phrasing and dynamic control lift arrangements while his stage rapport drives the room.</p><p>His warm tenor timbre spans a wide range, blending precise phrasing, expressive dynamics and influences from rock and indie pop to shape each song's emotional arc.</p>
10630                        </div>
10631                    </div>
10632                </div>
10633            </div>
10634        </div>
10635<div id="bio-leyla-sancar" class="bio-page">
10636            <div class="bio-header">
10637                <div class="container">
10638                    <a href="#artists" data-action="back" class="back-button lang-tr">← Sanat\xe7ılara D\xf6n</a>
10639                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
10640                </div>
10641            </div>
10642            
10643            <div class="bio-content">
10644                <div class="bio-card">
10645                    <div class="bio-image-section">
10646                        <img src="https://media.echovira.com/frekans/frekans_leyla_sancar_female_singer_portrait_0.png" alt="Leyla Sancar" class="bio-artist-image"
10647                srcset="https://media.echovira.com/frekans/frekans_leyla_sancar_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_leyla_sancar_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_leyla_sancar_female_singer_portrait_0-full.webp 1024w"
10648                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
10649                    </div>
10650                    <div class="bio-text-section">
10651                        <div class="bio-artist-title">
10652                            <h1>Leyla Sancar</h1>
10653                            <div class="stage-name">"Leyla" • 26 yaş / years</div>
10654                            <div class="role lang-tr">Kadın Vokal</div>
10655                            <div class="role lang-en">Female Singer</div>
10656                        </div>
10657                        <div class="bio-description lang-tr">
10658                            <p>Tanışın: Frekans'ın 26 yaşındaki kadın vokali Leyla (Leyla Sancar) — duygulu, soul dolu bir sese sahip ve sahnede enerjisi her par\xe7aya hayat veriyor. Sesindeki samimiyet ve g\xfc\xe7l\xfc ifade grubun genel sound'una derinlik katıyor.</p><p>Frekans'ın baş vokali olarak Leyla, samimi fraze yapısı ve her koroyu y\xfckselten ve canlı odayı dolduran g\xfc\xe7l\xfc crescendolarla grubun sesini şekillendiriyor. Tınısı sıcak ve dokulu, aralığı dumanlı d\xfcş\xfck notalardan net, \xe7ınlayan y\xfckseğe kadar esnektir.</p><p>Nakaratlarda Leyla'nın sesi Frekans'ın ruhunu taşıyor. Yeni şarkılarımızda onun vokalini \xf6ne \xe7ıkarıyoruz — \xe7ıkışlarımızı ka\xe7ırmayın, yorum bırakın ve bizi takip edin!</p>
10659                        </div>
10660                        <div class="bio-description lang-en">
10661                            <p>Meet Leyla Sancar — Leyla, 26, the female singer of Frekans. A soulful, deeply emotional voice that tells stories in every phrase.</p><p>As Frekans' lead vocalist, Leyla shapes the band's sound with intimate phrasing and powerful crescendos that lift every chorus and charge the live room. Her timbre is warm and textured, her range flexible from smoky low notes to clear, ringing highs.</p><p>Her dynamics and phrasing show jazz and indie-soul influences. On stage she balances quiet vulnerability with commanding presence, turning simple hooks into aching moments.</p>
10662                        </div>
10663                    </div>
10664                </div>
10665            </div>
10666        </div>
10667<div id="bio-mert-can" class="bio-page">
10668            <div class="bio-header">
10669                <div class="container">
10670                    <a href="#artists" data-action="back" class="back-button lang-tr">← Sanat\xe7ılara D\xf6n</a>
10671                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
10672                </div>
10673            </div>
10674            
10675            <div class="bio-content">
10676                <div class="bio-card">
10677                    <div class="bio-image-section">
10678                        <img src="https://media.echovira.com/frekans/frekans_mert_can_male_singer_portrait_0.png" alt="Mert Can" class="bio-artist-image"
10679                srcset="https://media.echovira.com/frekans/frekans_mert_can_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_mert_can_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_mert_can_male_singer_portrait_0-full.
10679webp 1024w"
10680                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
10681                    </div>
10682                    <div class="bio-text-section">
10683                        <div class="bio-artist-title">
10684                            <h1>Mert Can</h1>
10685                            <div class="stage-name">"Mert" • 23 yaş / years</div>
10686                            <div class="role lang-tr">Erkek Vokal</div>
10687                            <div class="role lang-en">Male Singer</div>
10688                        </div>
10689                        <div class="bio-description lang-tr">
10690                            <p>Mert Can — sahne adı Mert — Frekans'ın 23 yaşındaki enerjik erkek vokali: gen\xe7, g\xfc\xe7l\xfc ve sahnede ger\xe7ek bir enerji kaynağı. Sesi sıcak, dinamik ve etkileyici; enerjik gen\xe7 tınısıyla nakaratları taşıyor ve dinleyiciyle anında bağ kuruyor.</p><p>Tınısı sıcak ve keskin, aralığı samimi al\xe7aklardan y\xfcksek etkili kemerlere kadar uzanıyor ve fraze yapısı ve dinamikleri kalabalığı her satıra \xe7ekiyor. Indie rock ve modern pop etkilerinden etkilenerek, kancalı melodilerle konuşma teslimini tercih ediyor.</p><p>Mert'in vokalleri Frekans'ın sound'una hayat veriyor; duyguyu ve ritmi birleştirerek şarkılarımıza karakter katıyor. Yeni par\xe7alarımızda onun yeteneğini keşfetmek i\xe7in bizi takip edin!</p>
10691                        </div>
10692                        <div class="bio-description lang-en">
10693                            <p>Meet Mert — Mert Can, 23, the new male singer of Frekans. He brings an energetic, youthful sound—bright and immediate.</p><p>His timbre is warm and incisive, his range spans intimate lows to high-impact belts, and his phrasing and dynamics pull the crowd into every line. Influenced by indie rock and modern pop, he favors conversational delivery with hooked melodies.</p><p>On stage Mert tightens the band's groove and adds a forward-moving sing-along charge to every set. In the studio he crafts vocal arrangements that lift choruses while leaving space for instrumental interplay.</p>
10694                        </div>
10695                    </div>
10696                </div>
10697            </div>
10698        </div>
10699<div id="bio-selin-kara" class="bio-page">
10700            <div class="bio-header">
10701                <div class="container">
10702                    <a href="#artists" data-action="back" class="back-button lang-tr">← Sanat\xe7ılara D\xf6n</a>
10703                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
10704                </div>
10705            </div>
10706            
10707            <div class="bio-content">
10708                <div class="bio-card">
10709                    <div class="bio-image-section">
10710                        <img src="https://media.echovira.com/frekans/frekans_selin_kara_female_singer_portrait_0.png" alt="Selin Kara" class="bio-artist-image"
10711                srcset="https://media.echovira.com/frekans/frekans_selin_kara_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/frekans/frekans_selin_kara_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/frekans/frekans_selin_kara_female_singer_portrait_0-full.webp 1024w"
10712                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
10713                    </div>
10714                    <div class="bio-text-section">
10715                        <div class="bio-artist-title">
10716                            <h1>Selin Kara</h1>
10717                            <div class="stage-name">"Selin" • 25 yaş / years</div>
10718                            <div class="role lang-tr">Kadın Vokal</div>
10719                            <div class="role lang-en">Female Singer</div>
10720                        </div>
10721                        <div class="bio-description lang-tr">
10722                            <p>Selin Kara (Selin) — Frekans'ın 25 yaşındaki g\xfc\xe7l\xfc mezzo sesi, sahnemize yeni bir soluk getiriyor! G\xfcr, dramatik ve enerjik mezzo tonu; sahnede bıraktığı iz ve vokal \xe7eşitliliğiyle şarkılarımıza derinlik katıyor.</p><p>Grubun kadın şarkıcısı olarak sıcak, dumanlı bir tını, geniş aralık, hassas fraze ve n\xfcanslı dinamikler getiriyor. Fraze yapısı ve caz ve alternatif rock stilistik g\xf6ndermeler d\xfczenlemeleri daha karanlık, sinematik dokuları zorluyor.</p><p>Selin'in vokal dramı, g\xfc\xe7l\xfc dinamizmi ve duygusal ifadesi Frekans'ın sound'unu daha geniş, daha \xe7arpıcı hale getiriyor. Yeni par\xe7alarımızda onun yeteneğini duyacaksınız — takip edin, yorum bırakın!</p>
10723                        </div>
10724                        <div class="bio-description lang-en">
10725                            <p>Meet Selin Kara (stage name: Selin), 25, the new voice of Frekans. Her fierce mezzo voice and dramatic stage presence reshape every song.</p><p>As the band's female singer she brings a warm, smoky timbre, a wide range, precise phrasing and nuanced dynamics. Her phrasing and stylistic no
10725ds to jazz and alternative rock push arrangements toward darker, cinematic textures.</p><p>On stage she commands attention, steering crescendos and leaving space for the band to react. Selin anchors melodies, reframes dynamics, and raises Frekans' live energy with theatrical timing.</p>
10726                        </div>
10727                    </div>
10728                </div>
10729            </div>
10730        </div>
10731<div id="bio-yasemin-erden" class="bio-page">
10732            <div class="bio-header">
10733                <div class="container">
10734                    <a href="#artists" data-action="back" class="back-button lang-tr">← Sanat\xe7ılara D\xf6n</a>
10735                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
10736                </div>
10737            </div>
10738            
10739            <div class="bio-content">
10740                <div class="bio-card">
10741                    <div class="bio-image-section">
10742                        <img src="https://media.echovira.com/frekans/frekans_yasemin_erden_composer_lyricist_portrait_2.png" alt="Yasemin Erden" class="bio-artist-image"
10743                srcset="https://media.echovira.com/frekans/frekans_yasemin_erden_composer_lyricist_portrait_2-400.webp 400w, https://media.echovira.com/frekans/frekans_yasemin_erden_composer_lyricist_portrait_2-800.webp 800w, https://media.echovira.com/frekans/frekans_yasemin_erden_composer_lyricist_portrait_2-full.webp 1024w"
10744                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
10745                    </div>
10746                    <div class="bio-text-section">
10747                        <div class="bio-artist-title">
10748                            <h1>Yasemin Erden</h1>
10749                            <div class="stage-name">"Yasemin" • 27 yaş / years</div>
10750                            <div class="role lang-tr">Besteci/S\xf6z Yazarı</div>
10751                            <div class="role lang-en">Composer/Lyricist</div>
10752                        </div>
10753                        <div class="bio-description lang-tr">
10754                            <p>Tanışın: Yasemin Erden (sahne adı Yasemin), 27 yaşında, Frekans'ın s\xf6z yazarı ve bestecisi — grubun duygusal dilinin kalbi. Kelimeleriyle hik\xe2ye \xf6r\xfcp melodilere d\xf6n\xfcşt\xfcren Yasemin, yaratıcı besteleme s\xfcreci ve detaycı yaklaşımıyla Frekans'ın sesini şekillendiriyor.</p><p>Besteci olarak unutulmaz melodiler ve imza harmonik ilerlemeleri kurar, her par\xe7ada gelişen motifleri d\xfczenler. S\xf6z yazarı olarak samimi temalara ve canlı hikaye anlatımına odaklanır, duygusal netlik ve ileri hareketi vermek i\xe7in kadans ve imgeleri kullanır.</p><p>Her şarkıda onun i\xe7ten s\xf6ylemi ve ince dizeleriyle karşılaşacaksınız; s\xf6z yazarlığındaki ustalık, grubun atmosferini derinleştiriyor. Yeni par\xe7alarımızda onun besteleri ve s\xf6zleri \xf6ne \xe7ıkacak!</p>
10755                        </div>
10756                        <div class="bio-description lang-en">
10757                            <p>Meet Yasemin Erden — Yasemin, the 27‑year‑old composer and lyricist of Frekans. Her melodies and words quietly drive the band's pulse.</p><p>She is the group's sophisticated poet, shaping scenes and feelings with precise, image‑rich lines. As composer she builds memorable melodies and signature harmonic progressions, arranging motifs that evolve across each track.</p><p>As lyricist she focuses on intimate themes and vivid storytelling, using cadence and imagery to give emotional clarity and forward motion. On stage Yasemin's songwriting and melodic architecture create the band's dramatic arcs.</p>
10758                        </div>
10759                    </div>
10760                </div>
10761            </div>
10762        </div>
10763</div>
10764<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
10765  <nav aria-label="Site pages">
10766    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
10767    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
10768    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
10769    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
10770  </nav>
10771  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
10772</footer>
10773`;e.s(["FrekansEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=(0,t.injectFluidCanvas)(a,"#0090d0","#0d1117",.28);function s(e){document.body.classList.remove("lang-tr","lang-en"),document.body.classList.add("lang-"+e),a.querySelectorAll("[data-lang]").forEach(e
10773=>e.classList.remove("active")),a.querySelector(`[data-lang="${e}"]`)?.classList.add("active")}function r(e){a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display="none"});let i=document.getElementById("bio-"+e);i&&(i.classList.add("active"),window.scrollTo(0,0))}function n(){a.querySelectorAll(".bio-page").forEach(e=>e.classList.remove("active")),a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display=""}),window.scrollTo(0,0)}function o(e){let a=e.target,i=a.closest("[data-artist-id]");if(i){e.preventDefault(),r(i.dataset.artistId);return}if(a.closest('[data-action="back"]')){e.preventDefault(),n();return}}window.setLanguage=s,s("tr"),a.querySelector('[data-lang="tr"]')?.addEventListener("click",()=>s("tr")),a.querySelector('[data-lang="en"]')?.addEventListener("click",()=>s("en")),window.showArtistBio=r,window.hideBioPage=n,window.showMainPage=n;let l=document.getElementById("mobileToggle"),c=document.getElementById("navMenu");l&&c&&l.addEventListener("click",()=>c.classList.toggle("active"));let d=()=>document.getElementById("mainNav")?.classList.toggle("scrolled",window.scrollY>100);return a.addEventListener("click",o),window.addEventListener("scroll",d),()=>{i(),a.removeEventListener("click",o),window.removeEventListener("scroll",d),delete window.setLanguage,delete window.showArtistBio,delete window.hideBioPage,delete window.showMainPage}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,className:"echovira-page-root",dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(n)},suppressHydrationWarning:!0}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},789052,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n=`
10774    <link rel="preconnect" href="https://fonts.googleapis.com">
10775    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10776    <link href="https://fonts.googleapis.com/css2?family=Vazirmatn:wght@400;500;600;700&display=swap" rel="stylesheet">
10777    <style>@font-face{font-family:'Vazirmatn Fallback';src:local('Tahoma'),local('Arial');size-adjust:92%;ascent-override:90%;descent-override:25%;line-gap-override:0%;}</style>
10778    <style>
10779        /* WordPress Full Width Override */
10780        .vc_row[data-vc-full-width],
10781        .wpb_column,
10782        .vc_column_container,
10783        .wpb_wrapper,
10784        .entry-content,
10785        .site-content-contain,
10786        #content,
10787        .site-content,
10788        .site,
10789        #page,
10790        main {
10791            width: 100% !important;
10792            max-width: 100% !important;
10793            padding: 0 !important;
10794            margin: 0 !important;
10795            margin-top: 0 !important;
10796            padding-top: 0 !important;
10797        }
10798
10799        /* Custom Site Styles */
10800        :root {
10801            --ev-bg: #f8f9fa;
10802            --ev-fg: #333333;
10803            --primary-color: #1a1a1a;
10804            --secondary-color: #c9302c;
10805            --accent-color: #d9534f;
10806            --text-light: #ffffff;
10807            --text-dark: #333333;
10808            --background-dark: #0d1117;
10809            --background-light: #f8f9fa;
10810            --gradient-main: linear-gradient(135deg, #8B0000 0%, #DC143C 100%);
10811            --shadow-light: 0 2px 20px rgba(0,0,0,0.1);
10812            --shadow-heavy: 0 10px 40px rgba(0,0,0,0.2);
10813            --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
10814        }
10815
10816        * {
10817            margin: 0;
10818            padding: 0;
10819            box-sizing: border-box;
10820        }
10821
10822        body {
10823            font-family: 'Vazirmatn', 'Vazirmatn Fallback', Tahoma, Arial, sans-serif;
10824            line-height: 1.8;
10825            color: var(--ev-fg);
10826            background: var(--ev-bg);
10827            overflow-x: hidden;
10828            direction: rtl;
10829            margin: 0 !important;
10830            padding: 0 !important;
10831        }
10832
10833        body.lang-en {
10834            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
10835            direction: ltr;
10836        }
10837
10838        /* Explicitly set Farsi font for all Farsi elements */
10839        .lang-fa {
10840            font-family: 'Vazirmatn', 'Vazirmatn Fallback', Tahoma, Arial, sans-serif !important;
10841        }
10842
10843        /* Hide inactive language */
10844        /* Default to Farsi BEFORE JS runs. Previously body carried neither class
10845           until setLang('fa') fired in useEffect (~1.08s), so both language
10846           variants were hidden at first paint and the Farsi copy appeared only
10847           after hydration — measured growing .hero-content by 235px and jumping
10848           it up 102px, a single 0.151 layout shift that was this page's ENTIRE
10849           CLS score against Google's 0.1 threshold.
10850           This is the site's own default (setLang('fa')), just expressed where
10851           it costs nothing. The :not() rules below still win the moment JS adds
10852           a class, so the toggle keeps working unchanged. */
10853        .lang-en { display: none; }
10854        body.lang-fa .lang-en { display: none !important; }
10855        body.lang-en .lang-fa { display: none !important; }
10856        body.lang-en .lang-en { display: revert !important; }
10857
10858        /* Language Toggle */
10859        .lang-toggle {
10860            position: absolute;
10861            top: 20px;
10862            right: 20px;
10863            z-index: 1001;
10864            background: rgba(255,255,255,0.2);
10865            border-radius: 25px;
10866            padding: 8px;
10867            backdrop-filter: blur(10px);
10868        }
10869
10870        body.lang-en .lang-toggle { right: auto; left: 20px; }
10871
10872        .lang-toggle button {
10873            background: transparent;
10874            border: none;
10875            padding: 8px 16px;
10876            cursor: pointer;
10877            font-weight: 600;
10878            border-radius: 20px;
10879            transition: var(--transition);
10880            font-size: 0.9rem;
10881            color: white;
10882        }
10883
10884        .lang-toggle button.active {
10885            background: var(--secondary-color);
10886            color: white;
10887        }
10888
10889        /* Navigation */
10890        .main-nav {
10891            position: fixed;
10892            top: 0;
10893            left: 0;
10894            right: 0;
10895            background: rgba(26, 26, 26, 0.95);
10896            backdrop-filter: blur(20px);
10897            z-index: 1000;
10898            padding: 1rem 0;
10899            margin-bottom: 0;
10900        }
10901
10902        .nav-container {
10903            max-width: 1200px;
10904            margin: 0 auto;
10905            padding: 0 20px;
10906            display: flex;
10907            justify-content: space-between;
10908            align-items: center;
10909        }
10910
10911        body.lang-fa .nav-container {
10912            flex-direction: row-reverse;
10913            /* .lang-toggle sits at right:20px (167px wide) in this (default)
10914               RTL state, absolutely positioned and outside this flex row —
10915               nothing reserves space for it, so the nav-menu's right edge
10916               renders underneath it. row-reverse only reorders children;
10917               padding-right is still the physical right side of the box. */
10918            padding-right: 200px;
10919        }
10920
10921        .nav-left {
10922            display: flex;
10923            align-items: center;
10924            gap: 2rem;
10925        }
10926
10927        body.lang-fa .nav-left {
10928            flex-direction: row-reverse;
10929        }
10930
10931        .logo img { height: 50px; }
10932
10933        .nav-menu {
10934            display: flex;
10935            list-style: none;
10936            gap: 2rem;
10937        }
10938
10939        body.lang-fa .nav-menu { flex-direction: row-reverse; }
10940
10941        .nav-menu a {
10942            color: var(--text-light);
10943            text-decoration: none;
10944            font-weight: 500;
10945            transition: var(--transition);
10946        }
10947
10948        /* --secondary-color is 2.88:1 on the nav's dark background. */
10949        .nav-menu a:hover { color: #dc7876; }
10950
10951        .mobile-menu-toggle {
10952            display: none;
10953            background: none;
10954            border: none;
10955            color: var(--text-light);
10956            font-size: 1.5rem;
10957            cursor: pointer;
10958        }
10959
10960        /* Hero Section */
10961        .hero-section {
10962            min-height: 100vh;
10963            /* Lighter stop of --gradient-main (#DC143C) — worst case for the
10964               white hero text, 4.99:1. The ADA crawler can't see gradients
10965               (only background-color), so it falls through to white and
10966               reports white-on-white unless a solid stand-in is declared. */
10967            --ada-contrast-bg: #DC143C;
10968            background: var(--gradient-main);
10969            display: flex;
10970            align-items: center;
10971            justify-content: center;
10972            text-align: center;
10973            color: var(--text-light);
10974            position: relative;
10975            overflow: hidden;
10976        }
10977
10978        .hero-content {
10979            position: relative;
10980            z-index: 2;
10981            max-width: 800px;
10982            padding: 0 20px;
10983        }
10984
10985        .hero-title {
10986            font-size: clamp(3rem, 8vw, 6rem);
10987            margin-bottom: 1rem;
10988        }
10989
10990        .hero-subtitle {
10991            font-size: clamp(1.2rem, 3vw, 1.8rem);
10992            margin-bottom: 2rem;
10993            /* White is already only 4.99:1 on the gradient's lighter stop
10994               (#DC143C) — 0.9 opacity drops that to 4.23:1. */
10995        }
10996
10997        .cta-button {
10998            display: inline-block;
10999            padding: 18px 40px;
11000            background: white;
11001            color: var(--secondary-color);
11002            text-decoration: none;
11003            border-radius: 50px;
11004            font-weight: 600;
11005            font-size: 1.1rem;
11006            transition: var(--transition);
11007            box-shadow: var(--shadow-light);
11008        }
11009
11010        .cta-button:hover {
11011            transform: translateY(-3px);
11012            box-shadow: var(--shadow-heavy);
11013        }
11014
11015        /* Sections */
11016        .section {
11017            padding: 80px 0;
11018        }
11019
11020        .section-dark {
11021            background: var(--background-dark);
11022            color: var(--text-light);
11023        }
11024
11025        .container {
11026            max-width: 1200px;
11027            margin: 0 auto;
11028            padding: 0 20px;
11029        }
11030
11031        .section-title {
11032            text-align: center;
11033            font-size: 2.5rem;
11034            margin-bottom: 3rem;
11035            position: relative;
11036        }
11037
11038        .section-title::after {
11039            content: '';
11040            position: absolute;
11041            bottom: -10px;
11042            left: 50%;
11043            transform: translateX(-50%);
11044            width: 80px;
11045            height: 3px;
11046            background: var(--secondary-color);
11047            border-radius: 2px;
11048        }
11049
11050        .about-content {
11051            max-width: 800px;
11052            margin: 0 auto;
11053            text-align: center;
11054            line-height: 2;
11055            font-size: 1.1rem;
11056        }
11057
11058        .about-content p {
11059            margin-bottom: 1.5rem;
11060        }
11061
11062        /* Artists Gallery */
11063        .artists-gallery {
11064            display: grid;
11065            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
11066            gap: 2.5rem;
11067            margin-top: 3rem;
11068        }
11069
11070        .artist-card {
11071            position: relative;
11072            cursor: pointer;
11073            transition: var(--transition);
11074            background: white;
11075            border-radius: 20px;
11076            overflow: hidden;
11077            box-shadow: var(--shadow-light);
11078        }
11079
11080        .artist-card:hover {
11081            transform: translateY(-10px) scale(1.02);
11082            box-shadow: var(--shadow-heavy);
11083        }
11084
11085        .artist-image-wrapper {
11086            position: relative;
11087            width: 100%;
11088            aspect-ratio: 1;
11089            overflow: hidden;
11090        }
11091
11092        .artist-image {
11093            width: 100%;
11094            height: 100%;
11095            object-fit: cover;
11096            transition: transform 0.5s ease;
11097        }
11098
11099        .artist-card:hover .artist-image {
11100            transform: scale(1.1);
11101        }
11102
11103        .artist-overlay {
11104            position: absolute;
11105            bottom: 0;
11106            left: 0;
11107            right: 0;
11108            background: linear-gradient(to top, rgba(0,0,0,0.9), transparent);
11109            padding: 2rem 1.5rem 1.5rem;
11110            color: white;
11111        }
11112
11113        .artist-stage-name {
11114            font-size: 1.5rem;
11115            font-weight: 700;
11116            margin-bottom: 0.3rem;
11117        }
11118
11119        .artist-role-badge {
11120            display: inline-block;
11121            background: var(--secondary-color);
11122            padding: 4px 12px;
11123            border-radius: 15px;
11124            font-size: 0.75rem;
11125            font-weight: 600;
11126            text-transform: uppercase;
11127            letter-spacing: 0.5px;
11128        }
11129
11130        .artist-real-name {
11131            font-size: 0.9rem;
11132            opacity: 0.8;
11133            margin-top: 0.5rem;
11134        }
11135
11136        /* Releases Grid */
11137        .releases-grid {
11138            display: grid;
11139            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
11140            gap: 2rem;
11141            margin-top: 3rem;
11142        }
11143
11144        .release-card {
11145            background: white;
11146            border-radius: 20px;
11147            overflow: hidden;
11148            box-shadow: var(--shadow-light);
11149            transition: var(--transition);
11150        }
11151
11152        .release-card:hover {
11153            transform: translateY(-10px);
11154            box-shadow: var(--shadow-heavy);
11155        }
11156
11157        .release-image {
11158            position: relative;
11159            overflow: hidden;
11160            aspect-ratio: 1;
11161            background: var(--gradient-main);
11162            display: flex;
11163            align-items: center;
11164            justify-content: center;
11165            color: white;
11166            font-size: 4rem;
11167        }
11168
11169        .release-overlay {
11170            position: absolute;
11171            top: 0;
11172            left: 0;
11173            right: 0;
11174            bottom: 0;
11175            background: rgba(0,0,0,0.7);
11176            display: flex;
11177            align-items: center;
11178            justify-content: center;
11179            opacity: 0;
11180            transition: var(--transition);
11181        }
11182
11183        .release-card:hover .release-overlay {
11184            opacity: 1;
11185        }
11186
11187        .play-button {
11188            width: 60px;
11189            height: 60px;
11190            border-radius: 50%;
11191            background: var(--secondary-color);
11192            display: flex;
11193            align-items: center;
11194            justify-content: center;
11195            color: white;
11196            font-size: 1.5rem;
11197            transition: var(--transition);
11198            cursor: pointer;
11199        }
11200
11201        .play-button:hover {
11202            transform: scale(1.1);
11203            background: var(--accent-color);
11204        }
11205
11206        .release-info {
11207            padding: 1.5rem;
11208        }
11209
11210        body.lang-fa .release-info {
11211            text-align: right;
11212        }
11213
11214        body.lang-en .release-info {
11215            text-align: left;
11216        }
11217
11218        .release-title {
11219            font-size: 1.3rem;
11220            margin-bottom: 0.5rem;
11221            color: var(--text-dark);
11222        }
11223
11224        .release-date {
11225            color: #666;
11226            margin-bottom: 1rem;
11227            font-size: 0.9rem;
11228        }
11229
11230        .release-description {
11231            font-size: 0.9rem;
11232            color: #666;
11233            margin-bottom: 1rem;
11234            line-height: 1.6;
11235        }
11236
11237        .streaming-links {
11238            display: flex;
11239            gap: 0.5rem;
11240            flex-wrap: wrap;
11241        }
11242
11243        body.lang-fa .streaming-links {
11244            flex-direction: row-reverse;
11245        }
11246
11247        .streaming-link {
11248            padding: 8px 15px;
11249            background: var(--primary-color);
11250            color: white;
11251            text-decoration: none;
11252            border-radius: 20px;
11253            font-size: 0.8rem;
11254            font-weight: 500;
11255            transition: var(--transition);
11256        }
11257
11258        .streaming-link:hover {
11259            background: var(--secondary-color);
11260            transform: translateY(-2px);
11261        }
11262
11263        /* Videos Grid */
11264        .videos-grid {
11265            display: grid;
11266            grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
11267            gap: 2rem;
11268            margin-top: 3rem;
11269        }
11270
11271        .video-card {
11272            background: white;
11273            border-radius: 15px;
11274            overflow: hidden;
11275            box-shadow: var(--shadow-light);
11276            transition: var(--transition);
11277        }
11278
11279        .video-card:hover {
11280            transform: 
11280translateY(-5px);
11281            box-shadow: var(--shadow-heavy);
11282        }
11283
11284        .video-embed {
11285            position: relative;
11286            padding-bottom: 56.25%;
11287            height: 0;
11288            overflow: hidden;
11289            background: var(--gradient-main);
11290            display: flex;
11291            align-items: center;
11292            justify-content: center;
11293            color: white;
11294            font-size: 3rem;
11295        }
11296
11297        .video-info {
11298            padding: 1.5rem;
11299        }
11300
11301        body.lang-fa .video-info {
11302            text-align: right;
11303        }
11304
11305        body.lang-en .video-info {
11306            text-align: left;
11307        }
11308
11309        .video-type {
11310            display: inline-block;
11311            padding: 4px 12px;
11312            background: var(--accent-color);
11313            color: white;
11314            border-radius: 15px;
11315            font-size: 0.7rem;
11316            font-weight: 600;
11317            text-transform: uppercase;
11318            margin-bottom: 0.5rem;
11319        }
11320
11321        .video-title {
11322            font-size: 1.2rem;
11323            margin-bottom: 0.5rem;
11324            color: var(--text-dark);
11325        }
11326
11327        .video-link {
11328            display: inline-block;
11329            margin-top: 1rem;
11330            color: var(--secondary-color);
11331            text-decoration: none;
11332            font-weight: 600;
11333            transition: var(--transition);
11334        }
11335
11336        .video-link:hover {
11337            color: var(--accent-color);
11338        }
11339
11340        .view-all-btn {
11341            text-align: center;
11342            margin-top: 3rem;
11343        }
11344
11345        .view-all-btn a {
11346            display: inline-block;
11347            padding: 15px 35px;
11348            background: var(--secondary-color);
11349            color: white;
11350            text-decoration: none;
11351            border-radius: 30px;
11352            font-weight: 600;
11353            transition: var(--transition);
11354        }
11355
11356        .view-all-btn a:hover {
11357            background: var(--accent-color);
11358            transform: translateY(-3px);
11359        }
11360
11361        /* News Grid */
11362        .news-grid {
11363            display: grid;
11364            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
11365            gap: 2rem;
11366            margin-top: 3rem;
11367        }
11368
11369        .news-card {
11370            background: white;
11371            border-radius: 15px;
11372            overflow: hidden;
11373            box-shadow: var(--shadow-light);
11374            transition: var(--transition);
11375        }
11376
11377        .news-card:hover {
11378            transform: translateY(-5px);
11379            box-shadow: var(--shadow-heavy);
11380        }
11381
11382        .news-image {
11383            height: 200px;
11384            background: var(--gradient-main);
11385            display: flex;
11386            align-items: center;
11387            justify-content: center;
11388            color: white;
11389            font-size: 2rem;
11390        }
11391
11392        .news-content {
11393            padding: 1.5rem;
11394        }
11395
11396        body.lang-fa .news-content {
11397            text-align: right;
11398        }
11399
11400        body.lang-en .news-content {
11401            text-align: left;
11402        }
11403
11404        .news-title {
11405            font-size: 1.2rem;
11406            margin-bottom: 0.5rem;
11407            color: var(--text-dark);
11408        }
11409
11410        .news-date {
11411            color: #666;
11412            font-size: 0.9rem;
11413            margin-bottom: 1rem;
11414        }
11415
11416        .news-excerpt {
11417            color: #555;
11418            line-height: 1.6;
11419            margin-bottom: 1rem;
11420        }
11421
11422        .read-more {
11423            color: var(--secondary-color);
11424            text-decoration: none;
11425            font-weight: 600;
11426            transition: var(--transition);
11427        }
11428
11429        .read-more:hover {
11430            color: var(--accent-color);
11431        }
11432
11433        /* Bio Page */
11434        .page-container {
11435            display: none;
11436        }
11437
11438        .page-container.active {
11439            display: block;
11440        }
11441
11442        .bio-page {
11443            min-height: 100vh;
11444            padding-top: 100px;
11445            background: var(--background-light);
11446        }
11447
11448        .bio-header {
11449            background: var(--gradient-main);
11450            padding: 4rem 0;
11451            color: white;
11452            text-align: center;
11453        }
11454
11455        .back-button {
11456            display: inline-block;
11457            padding: 10px 20px;
11458            background: rgba(255,255,255,0.2);
11459            color: white;
11460            text-decoration: none;
11461            border-radius: 25px;
11462            margin-bottom: 2rem;
11463            transition: var(--transition);
11464        }
11465
11466        .back-button:hover {
11467            background: rgba(255,255,255,0.3);
11468        }
11469
11470        .bio-content {
11471            max-width: 900px;
11472            margin: -50px auto 0;
11473            position: relative;
11474            z-index: 10;
11475        }
11476
11477        .bio-card {
11478            background: white;
11479            border-radius: 20px;
11480            overflow: hidden;
11481            box-shadow: var(--shadow-heavy);
11482        }
11483
11484        .bio-image-section {
11485            padding: 3rem;
11486            text-align: center;
11487            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
11488        }
11489
11490        .bio-artist-image {
11491            width: 250px;
11492            height: 250px;
11493            border-radius: 50%;
11494            object-fit: cover;
11495            border: 5px solid white;
11496            box-shadow: var(--shadow-light);
11497        }
11498
11499        .bio-text-section {
11500            padding: 3rem;
11501        }
11502
11503        body.lang-fa .bio-text-section {
11504            text-align: right;
11505        }
11506
11507        body.lang-en .bio-text-section {
11508            text-align: left;
11509        }
11510
11511        .bio-artist-title {
11512            text-align: center;
11513            margin-bottom: 2rem;
11514        }
11515
11516        .bio-artist-title h1 {
11517            font-size: 2.5rem;
11518            margin-bottom: 0.5rem;
11519        }
11520
11521        .bio-artist-title .stage-name {
11522            font-size: 1.2rem;
11523            color: var(--secondary-color);
11524            font-weight: 600;
11525            margin-bottom: 1rem;
11526        }
11527
11528        .bio-artist-title .role {
11529            display: inline-block;
11530            background: var(--accent-color);
11531            color: white;
11532            padding: 8px 20px;
11533            border-radius: 20px;
11534            font-size: 0.9rem;
11535            font-weight: 600;
11536        }
11537
11538        .bio-description {
11539            line-height: 2;
11540            font-size: 1.05rem;
11541        }
11542
11543        .bio-description p {
11544            margin-bottom: 1.5rem;
11545        }
11546
11547        /* Footer */
11548        .main-footer {
11549            background: var(--primary-color);
11550            color: var(--text-light);
11551            padding: 3rem 0 1rem;
11552            text-align: center;
11553        }
11554
11555        .social-links {
11556            display: flex;
11557            justify-content: center;
11558            gap: 1rem;
11559            margin-bottom: 2rem;
11560        }
11561
11562        .social-link {
11563            width: 50px;
11564            height: 50px;
11565            border-radius: 50%;
11566            background: var(--secondary-color);
11567            color: var(--text-light);
11568            display: flex;
11569            align-items: center;
11570            justify-content: center;
11571            text-decoration: none;
11572            font-size: 1.2rem;
11573            transition: var(--transition);
11574        }
11575
11576        .social-link:hover {
11577            background: var(--accent-color);
11578            transform: translateY(-3px);
11579        }
11580
11581        @media (max-width: 768px) {
11582            .mobile-menu-toggle {
11583                display: block;
11584            }
11585            /* Same overlap as desktop: the hamburger is the only thing left
11586               in this flex row at mobile width (nav-menu below goes
11587               position:fixed, out of flow) and renders under the toggle. */
11588            body.lang-fa .nav-container { padding-right: 195px; }
11589
11590            .nav-menu {
11591                position: fixed;
11592                top: 70px;
11593                left: 0;
11594                right: 0;
11595                background: var(--primary-color);
11596                flex-direction: column;
11597                padding: 2rem;
11598                transform: translateY(-100%);
11599                opacity: 0;
11600                visibility: hidden;
11601                transition: var(--transition);
11602            }
11603            
11604            .nav-menu.active {
11605                transform: translateY(0);
11606                opacity: 1;
11607                visibility: visible;
11608            }
11609
11610            .artists-gallery {
11611                grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
11612                gap: 1.5rem;
11613            }
11614
11615            .releases-grid,
11616            .videos-grid,
11617            .news-grid {
11618                grid-template-columns: 1fr;
11619                gap: 1.5rem;
11620            }
11621
11622            .bio-artist-image {
11623                width: 200px;
11624                height: 200px;
11625            }
11626
11627            .section {
11628                padding: 60px 0;
11629            }
11630        }
11631    
11632    .ev-nw-badge{position:fixed;bottom:72px;right:20px;z-index:9999;display:inline-flex;align-items:center;gap:5px;padding:8px 14px;background:rgba(2,2,8,.9);border:1px solid rgba(255,255,255,.14);border-radius:100px;font-size:.68rem;font-weight:600;color:rgba(255,255,255,.55);text-decoration:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);letter-spacing:.06em;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}
11633.ev-nw-badge:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(2,2,8,.97)}
11634.ev-nw-badge-mark{width:14px;height:14px;display:grid;grid-template-columns:1fr 1fr;gap:2px;flex-shrink:0}
11635.ev-nw-badge-mark span{background:currentColor;border-radius:2px;display:block}
11636  </style>
11637
11638<a href="https://echovira.com" class="ev-nw-badge" target="_blank" rel="noopener" title="EchoVira Music Network">
11639  <div class="ev-nw-badge-mark"><span></span><span></span><span></span><span></span></div>
11640  EchoVira
11641</a>
11642
11643<nav class="main-nav" id="mainNav">
11644    <div class="nav-container">
11645        <a href="#home" class="logo" data-action="back">
11646            <img src="https://media.echovira.com/echovira/hich_logo.png" alt="Hich"
11647                srcset="https://media.echovira.com/echovira/hich_logo-400.webp 400w, https://media.echovira.com/echovira/hich_logo-800.webp 800w, https://media.echovira.com/echovira/hich_logo-full.webp 1024w"
11648                sizes="50px" width="1024" height="1024" decoding="async">
11649        </a>
11650        <ul class="nav-menu" id="navMenu">
11651            <li class="lang-fa"><a href="#home" data-action="back">خانه</a></li>
11652            <li class="lang-fa"><a href="#about">درباره</a></li>
11653            <li class="lang-fa"><a href="#artists">هنرمندان</a></li>
11654            <li class="lang-fa"><a href="#releases">آثار</a></li>
11655            <li class="lang-fa"><a href="#videos">ویدیوها</a></li>
11656            <li class="lang-fa"><a href="#news">اخبار</a></li>
11657            
11658            <li class="lang-en"><a href="#home" data-action="back">Home</a></li>
11659            <li class="lang-en"><a href="#about">About</a></li>
11660            <li class="lang-en"><a href="#artists">Artists</a></li>
11661            <li class="lang-en"><a href="#releases">Releases</a></li>
11662            <li class="lang-en"><a href="#videos">Videos</a></li>
11663            <li class="lang-en"><a href="#news">News</a></li>
11664        </ul>
11665        <button class="mobile-menu-toggle" id="mobileToggle">☰</button>
11666    </div>
11667<div class="lang-toggle">
11668            <button onclick="window.setLanguage&&setLanguage('fa')" class="lang-btn-fa active" data-lang="fa">فارسی</button>
11669            <button onclick="window.setLanguage&&setLanguage('en')" class="lang-btn-en" data-lang="en">English</button>
11670        </div>
11671</nav>
11672
11673<span id="main-content" tabindex="-1"></span>
11674
11675<div id="mainPage" class="page-container active">
11676    <section class="hero-section" id="home">
11677        
11678        
11679        <div class="hero-content">
11680            <h1 class="hero-title">هیچ</h1>
11681            <p class="hero-subtitle lang-fa">گروه موسیقی پاپ و راک ایرانی | موسیقی فارسی مدرن با احساس عمیق</p>
11682            <p class="hero-subtitle lang-en">Persian Pop Rock Band | Modern Iranian Music with Deep Emotion</p>
11683            <a href="#about" class="cta-button lang-fa">کشف موسیقی هیچ</a>
11684            <a href="#about" class="cta-button lang-en">Discover Hich Music</a>
11685        </div>
11686    </section>
11687
11688    <section class="section" id="about">
11689        <div class="container">
11690            <h2 class="section-title lang-fa">درباره گروه هیچ - موسیقی ایرانی مدرن</h2>
11691            <h2 class="section-title lang-en">About Hich - Modern Persian Music Band</h2>
11692            <div class="about-content">
11693                <p class="lang-fa">
11694                    <strong>هیچ (Hich)</strong> — بیش از یک گروه موسیقی، یک جنبش فرهنگی در <strong>موسیقی پاپ راک ایرانی</strong> است. ما با ترکیب منحصربه‌فرد <strong>موسیقی سنتی ایرانی</strong> با سبک‌های مدرن پاپ، <strong>راک آلترناتیو</strong>، الکترونیک و <strong>ایندی راک فارسی</strong>، تجربه‌ای نو و هیجان‌انگیز از <strong>موسیقی فارسی معاصر</strong> خلق می‌کنیم. ما معتقدیم موسیقی زبان جهانی عواطف است که فراتر از مرزها، فرهنگ‌ها و زبان‌ها، مستقیم به قلب‌ها راه می‌یابد. صدای ما، صدای نسل جوان ایران است — نسلی که ریشه در سنت دارد اما چشم به آینده.
11695                </p>
11696                <p class="lang-fa">
11697                    گروه موسیقی <strong>هیچ</strong> متشکل از ۱۲ هنرمند حرفه‌ای است: <strong>خوانندگان باتجربه و با استعداد</strong> (مرد و زن)، <strong>نوازندگان چندساز ماهر</strong>، و <strong>آهنگسازان و ترانه‌سرایان خلاق ایرانی</strong> که با الهام از <strong>موسیقی کلاسیک ایرانی</strong>، ردیف دستگاهی، <strong>پاپ فارسی</strong>، <strong>راک پروگرسیو</strong>، ایندی پاپ و موسیقی الکترونیک اکسپریمنتال، آثاری با <strong>کیفیت استودیویی بین‌المللی</strong> و تولیدات حرفه‌ای می‌سازند. هر ترک ما یک سفر احساسی است — داستان‌هایی درباره زندگی، عشق، دلتنگی، امید، غم و شادی که با <strong>شعر فارسی عمیق و ادبی</strong>، <strong>ملودی‌های به‌یادماندنی</strong> و آرنجمنت‌های پیچیده و لایه‌لایه بیان می‌شوند. موسیقی هیچ برای کسانی است که به دنبال چیزی بیش از سرگرمی هستند؛ برای شنوندگانی که موسیقی را حس می‌کنند، نه فقط می‌شنوند.
11698                </p>
11699                <p class="lang-fa">
11700                    از <strong>کنسرت‌های زنده پرانرژی</strong> در ایران و شهرهای بزرگ جهان تا انتشار <strong>آلبوم‌ها، سینگل‌ها و EP های دیجیتال</strong> روی تمام <strong>پلتفرم‌های استریمینگ موسیقی آنلاین</strong> از جمله Spotify، Apple Music، YouTube Music، Deezer، Tidal و Anghami، هیچ در حال ساختن پلی است میان گذشته غنی <strong>موسیقی ایرانی</strong> و آینده‌ای روشن و جهانی. ما به دنبال خلق <strong>موسیقی اصیل و ارجینال ایرانی</strong> با <strong>کیفیت و استاندارد جهانی</strong> هستیم که هم برای <strong>شنوندگان فارسی‌زبان ایرانی و افغانی و تاجیک</strong>
11700 و هم برای علاقه‌مندان به موسیقی جهان، <strong>موسیقی خاورمیانه</strong> و <strong>فرهنگ و هنر ایرانی</strong> جذاب، الهام‌بخش و ماندگار باشد. هیچ یعنی صدای نسل نو، موسیقی بدون مرز، احساس خالص.
11701                </p>
11702                
11703                <p class="lang-en">
11704                    <strong>Hich (هیچ)</strong> — more than a band, a cultural movement in <strong>Iranian pop rock music</strong>. We blend <strong>traditional Persian music</strong>, classical Iranian melodies, and Dastgah system with modern <strong>alternative rock</strong>, <strong>indie pop</strong>, progressive rock, <strong>electronic music</strong>, and experimental sounds to create a fresh, exciting experience of <strong>contemporary Farsi music</strong>. We believe music is the universal language of emotion that transcends borders, cultures, and words, speaking directly to the heart. Our sound is the voice of Iran's new generation — rooted in tradition but looking boldly toward the future.
11705                </p>
11706                <p class="lang-en">
11707                    <strong>Hich music band</strong> consists of 12 professional artists: <strong>experienced and talented male and female vocalists</strong>, <strong>skilled multi-instrumentalists</strong>, and <strong>creative Iranian composers and lyricists</strong> who draw deep inspiration from <strong>classical Iranian music heritage</strong>, Persian traditional instruments, <strong>Persian pop</strong>, progressive and indie rock, electronic and ambient music to produce <strong>world-class studio recordings</strong> with international production standards. Every track we create is an emotional journey — stories about life, love, longing, hope, sorrow and joy expressed through <strong>profound Persian poetry</strong>, <strong>unforgettable melodies</strong>, and complex, layered arrangements. Hich music is for those seeking more than entertainment; for listeners who feel music, not just hear it. Our songs connect with fans of authentic Middle Eastern sounds, world music enthusiasts, and anyone who appreciates meaningful, artistic expression.
11708                </p>
11709                <p class="lang-en">
11710                    From <strong>high-energy live concerts</strong> in Iran and major cities worldwide to releasing <strong>digital albums, singles, and EPs</strong> on all major <strong>music streaming platforms</strong> including Spotify, Apple Music, YouTube Music, Deezer, Tidal, and Anghami, Hich is building a bridge between Iran's rich <strong>Persian musical heritage</strong> and a bright, global future. We're dedicated to creating <strong>authentic, original Iranian music</strong> with <strong>international quality and standards</strong> that resonates with <strong>Persian-speaking audiences from Iran, Afghanistan, and Tajikistan</strong> as well as global music lovers interested in <strong>Middle Eastern music</strong>, <strong>world music</strong>, and <strong>Persian art and culture</strong>. Our mission: to share Iran's musical soul with the world, proving that great music has no language barrier. Hich means the voice of a new generation, music without borders, pure emotion.
11711                </p>
11712            </div>
11713        </div>
11714    </section>
11715
11716    <section class="section" id="artists">
11717        <div class="container">
11718            <h2 class="section-title lang-fa">هنرمندان</h2>
11719            <h2 class="section-title lang-en">The Artists</h2>
11720            <div class="artists-gallery" id="artistsGallery">
11721<div class="artist-card" data-artist-id="aria-kaviani" style="cursor:pointer">
11722            <div class="artist-image-wrapper">
11723                <img src="https://media.echovira.com/hich/hich_aria_kaviani_male_singer_portrait_0.png" alt="آریا کاویانی" class="artist-image"
11724                srcset="https://media.echovira.com/hich/hich_aria_kaviani_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/hich/hich_aria_kaviani_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/hich/hich_aria_kaviani_male_singer_portrait_0-full.
11724webp 1024w"
11725                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
11726                <div class="artist-overlay">
11727                    <div class="artist-stage-name lang-fa">آریا</div>
11728                    <div class="artist-stage-name lang-en">Aria</div>
11729                    <div class="artist-role-badge lang-fa">خواننده مرد</div>
11730                    <div class="artist-role-badge lang-en">Male Singer</div>
11731                    <div class="artist-real-name lang-fa">آریا کاویانی</div>
11732                    <div class="artist-real-name lang-en">Aria Kaviani</div>
11733                </div>
11734            </div>
11735        </div><div class="artist-card" data-artist-id="ava-shirazi" style="cursor:pointer">
11736            <div class="artist-image-wrapper">
11737                <img src="https://media.echovira.com/hich/hich_ava_shirazi_female_singer_portrait_0.png" alt="آوا شیرازی" class="artist-image"
11738                srcset="https://media.echovira.com/hich/hich_ava_shirazi_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/hich/hich_ava_shirazi_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/hich/hich_ava_shirazi_female_singer_portrait_0-full.webp 1024w"
11739                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
11740                <div class="artist-overlay">
11741                    <div class="artist-stage-name lang-fa">آوا</div>
11742                    <div class="artist-stage-name lang-en">Ava</div>
11743                    <div class="artist-role-badge lang-fa">خواننده زن</div>
11744                    <div class="artist-role-badge lang-en">Female Singer</div>
11745                    <div class="artist-real-name lang-fa">آوا شیرازی</div>
11746                    <div class="artist-real-name lang-en">Ava Shirazi</div>
11747                </div>
11748            </div>
11749        </div><div class="artist-card" data-artist-id="ella-farjad" style="cursor:pointer">
11750            <div class="artist-image-wrapper">
11751                <img src="https://media.echovira.com/hich/hich_ella_farjad_female_singer_portrait_1.png" alt="الا فرجاد" class="artist-image"
11752                srcset="https://media.echovira.com/hich/hich_ella_farjad_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/hich/hich_ella_farjad_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/hich/hich_ella_farjad_female_singer_portrait_1-full.webp 1024w"
11753                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
11754                <div class="artist-overlay">
11755                    <div class="artist-stage-name lang-fa">الا</div>
11756                    <div class="artist-stage-name lang-en">Ella</div>
11757                    <div class="artist-role-badge lang-fa">خواننده زن</div>
11758                    <div class="artist-role-badge lang-en">Female Singer</div>
11759                    <div class="artist-real-name lang-fa">الا فرجاد</div>
11760                    <div class="artist-real-name lang-en">Ella Farjad</div>
11761                </div>
11762            </div>
11763        </div><div class="artist-card" data-artist-id="elvin-shadmehr" style="cursor:pointer">
11764            <div class="artist-image-wrapper">
11765                <img src="https://media.echovira.com/hich/hich_elvin_shadmehr_male_singer_portrait_2.png" alt="الون شادمهر" class="artist-image"
11766                srcset="https://media.echovira.com/hich/hich_elvin_shadmehr_male_singer_portrait_2-400.webp 400w, https://media.echovira.com/hich/hich_elvin_shadmehr_male_singer_portrait_2-800.webp 800w, https://media.echovira.com/hich/hich_elvin_shadmehr_male_singer_portrait_2-full.webp 1024w"
11767                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
11768                <div class="artist-overlay">
11769                    <div class="artist-stage-name lang-fa">الون</div>
11770                    <div class="artist-stage-name lang-en">Elvin</div>
11771                    <div class="artist-role-badge lang-fa">خواننده مرد</div>
11772                    <div class="artist-role-badge lang-en">Male Singer</div>
11773                    <div class="artist-real-name lang-fa">الون شادمهر</div>
11774                    <div class="artist-real-name lang-en">Elvin Shadmehr</div>
11775                </div>
11776            </div>
11777        </div><div class="artist-card" data-artist-id="kavan-ramin" style="cursor:pointer">
11778            <div class="artist-image-wrapper">
11779                <img src="https://media.echovira.com/hich/hich_kavan_ramin_male_singer_portrait_1_1.png" alt="کاوان رامین" class="artist-image"
11780                srcset="https://media.echovira.com/hich/hich_kavan_ramin_male_singer_portrait_1_1-400.webp 400w, https://media.echovira.com/hich/hich_kavan_ramin_male_singer_portrait_1_1-800.webp 800w, https://media.echovira.com/hich/hich_kavan_ramin_male_singer_portrait_1_1-full.webp 1024w"
11781                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
11782                <div class="artist-overlay">
11783                    <div class="artist-stage-name lang-fa">کاوان</div>
11784                    <div class="artist-stage-name lang-en">Kavan</div>
11785                    <div class="artist-role-badge lang-fa">خواننده مرد</div>
11786                    <div class="artist-role-badge lang-en">Male Singer</div>
11787                    <div class="artist-real-name lang-fa">کاوان رامین</div>
11788                    <div class="artist-real-name lang-en">Kavan Ramin</div>
11789                </div>
11790            </div>
11791        </div><div class="artist-card" data-artist-id="kian-rad" style="cursor:pointer">
11792            <div class="artist-image-wrapper">
11793                <img src="https://media.echovira.com/hich/hich_kian_rad_male_singer_portrait_1.png" alt="کیان راد" class="artist-image"
11794                srcset="https://media.echovira.com/hich/hich_kian_rad_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/hich/hich_kian_rad_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/hich/hich_kian_rad_male_singer_portrait_1-full.webp 1024w"
11795                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
11796                <div class="artist-overlay">
11797                    <div class="artist-stage-name lang-fa">کیان</div>
11798                    <div class="artist-stage-name lang-en">Kian</div>
11799                    <div class="artist-role-badge lang-fa">خواننده مرد</div>
11800                    <div class="artist-role-badge lang-en">Male Singer</div>
11801                    <div class="artist-real-name lang-fa">کیان راد</div>
11802                    <div class="artist-real-name lang-en">Kian Rad</div>
11803                </div>
11804            </div>
11805        </div><div class="artist-card" data-artist-id="liana-khosravi" style="cursor:pointer">
11806            <div class="artist-image-wrapper">
11807                <img src="https://media.echovira.com/hich/hich_liana_khosravi_female_singer_portrait_0.png" alt="لیانا خسروی" class="artist-image"
11808                srcset="https://media.echovira.com/hich/hich_liana_khosravi_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/hich/hich_liana_khosravi_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/hich/hich_liana_khosravi_female_singer_portrait_0-full.webp 1024w"
11809                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
11810                <div class="artist-overlay">
11811                    <div class="artist-stage-name lang-fa">لیانا</div>
11812                    <div class="artist-stage-name lang-en">Liana</div>
11813                    <div class="artist-role-badge lang-fa">خواننده زن</div>
11814                    <div class="artist-role-badge lang-en">Female Singer</div>
11815                    <div class="artist-real-name lang-fa">لیانا خسروی</div>
11816                    <div class="artist-real-name lang-en">Liana Khosravi</div>
11817                </div>
11818            </div>
11819        </div><div class="artist-card" data-artist-id="mahla-parsa" style="cursor:pointer">
11820            <div class="artist-image-wrapper">
11821                <img src="https://media.echovira.com/hich/hich_mahla_parsa_female_singer_portrait_0.png" alt="مهلا پارسا" class="artist-image"
11822                srcset="https://media.echovira.com/hich/hich_mahla_parsa_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/hich/hich_mahla_parsa_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/hich/hich_mahla_parsa_female_singer_portrait_0-full.webp 1024w"
11823                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
11824                <div class="artist-overlay">
11825                    <div class="artist-stage-name lang-fa">مهلا</div>
11826                    <div class="artist-stage-name lang-en">Mahla</div>
11827                    <div class="artist-role-badge lang-fa">خواننده زن</div>
11828                    <div class="artist-role-badge lang-en">Female Singer</div>
11829                    <div class="artist-real-name lang-fa">مهلا پارسا</div>
11830                    <div class="artist-real-name lang-en">Mahla Parsa</div>
11831                </div>
11832            </div>
11833        </div><div class="artist-card" data-artist-id="piroz-danesh" style="cursor:pointer">
11834            <div class="artist-image-wrapper">
11835                <img src="https://media.echovira.com/hich/hich_piroz_danesh_male_singer_portrait_0.png" alt="پیروز دانش" class="artist-image"
11836                srcset="https://media.echovira.com/hich/hich_piroz_danesh_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/hich/hich_piroz_danesh_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/hich/hich_piroz_danesh_male_singer_portrait_0-full.
11836webp 1024w"
11837                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
11838                <div class="artist-overlay">
11839                    <div class="artist-stage-name lang-fa">پیروز</div>
11840                    <div class="artist-stage-name lang-en">Piroz</div>
11841                    <div class="artist-role-badge lang-fa">خواننده مرد</div>
11842                    <div class="artist-role-badge lang-en">Male Singer</div>
11843                    <div class="artist-real-name lang-fa">پیروز دانش</div>
11844                    <div class="artist-real-name lang-en">Piroz Danesh</div>
11845                </div>
11846            </div>
11847        </div><div class="artist-card" data-artist-id="roxin-bahrami" style="cursor:pointer">
11848            <div class="artist-image-wrapper">
11849                <img src="https://media.echovira.com/hich/hich_roxin_bahrami_multi_instrumentalist_portrait_0.png" alt="روکسین بهرامی" class="artist-image"
11850                srcset="https://media.echovira.com/hich/hich_roxin_bahrami_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/hich/hich_roxin_bahrami_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/hich/hich_roxin_bahrami_multi_instrumentalist_portrait_0-full.webp 1024w"
11851                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
11852                <div class="artist-overlay">
11853                    <div class="artist-stage-name lang-fa">روکسین</div>
11854                    <div class="artist-stage-name lang-en">Roxin</div>
11855                    <div class="artist-role-badge lang-fa">نوازنده چندساز</div>
11856                    <div class="artist-role-badge lang-en">Multi-Instrumentalist</div>
11857                    <div class="artist-real-name lang-fa">روکسین بهرامی</div>
11858                    <div class="artist-real-name lang-en">Roxin Bahrami</div>
11859                </div>
11860            </div>
11861        </div><div class="artist-card" data-artist-id="selin-khosrowshahi" style="cursor:pointer">
11862            <div class="artist-image-wrapper">
11863                <img src="https://media.echovira.com/hich/hich_selin_khosrowshahi_composer_lyricist_portrait_1.png" alt="سلین خسروشاهی" class="artist-image"
11864                srcset="https://media.echovira.com/hich/hich_selin_khosrowshahi_composer_lyricist_portrait_1-400.webp 400w, https://media.echovira.com/hich/hich_selin_khosrowshahi_composer_lyricist_portrait_1-800.webp 800w, https://media.echovira.com/hich/hich_selin_khosrowshahi_composer_lyricist_portrait_1-full.webp 1024w"
11865                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
11866                <div class="artist-overlay">
11867                    <div class="artist-stage-name lang-fa">سلین</div>
11868                    <div class="artist-stage-name lang-en">Selin</div>
11869                    <div class="artist-role-badge lang-fa">آهنگساز و ترانه‌سرا</div>
11870                    <div class="artist-role-badge lang-en">Composer & Lyricist</div>
11871                    <div class="artist-real-name lang-fa">سلین خسروشاهی</div>
11872                    <div class="artist-real-name lang-en">Selin Khosrowshahi</div>
11873                </div>
11874            </div>
11875        </div><div class="artist-card" data-artist-id="tara-nouri" style="cursor:pointer">
11876            <div class="artist-image-wrapper">
11877                <img src="https://media.echovira.com/hich/hich_tara_nouri_female_singer_portrait_1.png" alt="تارا نوری" class="artist-image"
11878                srcset="https://media.echovira.com/hich/hich_tara_nouri_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/hich/hich_tara_nouri_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/hich/hich_tara_nouri_female_singer_portrait_1-full.webp 1024w"
11879                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
11880                <div class="artist-overlay">
11881                    <div class="artist-stage-name lang-fa">تارا</div>
11882                    <div class="artist-stage-name lang-en">Tara</div>
11883                    <div class="artist-role-badge lang-fa">خواننده زن</div>
11884                    <div class="artist-role-badge lang-en">Female Singer</div>
11885                    <div class="artist-real-name lang-fa">تارا نوری</div>
11886                    <div class="artist-real-name lang-en">Tara Nouri</div>
11887                </div>
11888            </div>
11889        </div>
11890</div>
11891        </div>
11892    </section>
11893
11894    <section class="section section-dark" id="releases">
11895        <div class="container">
11896            <h2 class="section-title lang-fa">آخرین آثار</h2>
11897            <h2 class="section-title lang-en">Latest Releases</h2>
11898            <div class="releases-grid">
11899                <div class="release-card">
11900                    <div class="release-image">
11901                        🎵
11902                        <div class="release-overlay">
11903                            <div class="play-button">▶</div>
11904                        </div>
11905                    </div>
11906                    <div class="release-info">
11907                        <h3 class="release-title lang-fa">آهنگ جدید</h3>
11908                        <h3 class="release-title lang-en">New Single</h3>
11909                        <p class="release-date lang-fa">۱ دسامبر ۲۰۲۴</p>
11910                        <p class="release-date lang-en">December 1, 2024</p>
11911                        <p class="release-description lang-fa">تازه‌ترین اثر گروه هیچ با ترکیبی از موسیقی سنتی ایرانی و پاپ راک مدرن</p>
11912                        <p class="release-description lang-en">Latest work from Hich band blending traditional Persian music with modern pop rock</p>
11913                        <div class="streaming-links">
11914                            <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="streaming-link">YouTube</a>
11915                            <a href="https://open.spotify.com/artist/3zSdSaMl0cVnYHCgPLRoe4" target="_blank" class="streaming-link">Spotify</a>
11916                            <a href="https://music.apple.com/us/artist/hich/1855194476" target="_blank" class="streaming-link">Apple Music</a>
11917                        </div>
11918                    </div>
11919                </div>
11920
11921                <div class="release-card">
11922                    <div class="release-image">
11923                        🎼
11924                        <div class="release-overlay">
11925                            <div class="play-button">▶</div>
11926                        </div>
11927                    </div>
11928                    <div class="release-info">
11929                        <h3 class="release-title lang-fa">آلبوم جدید</h3>
11930                        <h3 class="release-title lang-en">New Album</h3>
11931                        <p class="release-date lang-fa">۱۵ اکتبر ۲۰۲۴</p>
11932                        <p class="release-date lang-en">October 15, 2024</p>
11933                        <p class="release-description lang-fa">مجموعه‌ای از آهنگ‌های عاشقانه و احساسی با شعرهای فارسی عمیق</p>
11934                        <p class="release-description lang-en">Collection of romantic and emotional songs with deep Persian poetry</p>
11935                        <div class="streaming-links">
11936                            <a href="https://open.spotify.com/artist/3zSdSaMl0cVnYHCgPLRoe4" target="_blank" class="streaming-link">Spotify</a>
11937                            <a href="https://music.apple.com/us/artist/hich/1855194476" target="_blank" class="streaming-link">Apple Music</a>
11938                            <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="streaming-link">YouTube</a>
11939                        </div>
11940                    </div>
11941                </div>
11942
11943                <div class="release-card">
11944                    <div class="release-image">
11945                        ⚡
11946                        <div class="release-overlay">
11947                            <div class="play-button">▶</div>
11948                        </div>
11949                    </div>
11950                    <div class="release-info">
11951                        <h3 class="release-title lang-fa">EP جدید</h3>
11952                        <h3 class="release-title lang-en">New EP</h3>
11953                        <p class="release-date lang-fa">۲۰ آگوست ۲۰۲۴</p>
11954                        <p class="release-date lang-en">August 20, 2024</p>
11955                        <p class="release-description lang-fa">چهار آهنگ پرانرژی با سبک راک ایرانی مدرن</p>
11956                        <p class="release-description lang-en">Four high-energy tracks in modern Iranian rock style</p>
11957                        <div class="streaming-links">
11958                            <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="streaming-link">YouTube</a>
11959                            <a href="https://open.spotify.com/artist/3zSdSaMl0cVnYHCgPLRoe4" target="_blank" class="streaming-link">Spotify</a>
11960                            <a href="https://music.apple.com/us/artist/hich/1855194476" target="_blank" class="streaming-link">Apple Music</a>
11961                        </div>
11962                    </div>
11963                </div>
11964            </div>
11965        </div>
11966    </section>
11967
11968    <section class="section" id="videos">
11969        <div class="container">
11970            <h2 class="section-title lang-fa">آخرین ویدیوها</h2>
11971            <h2 class="section-title lang-en">Latest Videos</h2>
11972            <div class="videos-grid">
11973                <div class="video-card">
11974                    <div class="video-embed">
11975                        📹
11976                    </div>
11977                    <div class="video-info">
11978                        <span class="video-type lang-fa">موزیک ویدیو</span>
11979                        <span class="video-type lang-en">Music Video</span>
11980                        <h3 class="video-title lang-fa">ویدیو کلیپ رسمی</h3>
11981                        <h3 class="video-title lang-en">Official Music Video</h3>
11982                        <p class="lang-fa">تازه‌ترین موزیک ویدیو گروه هیچ با تصاویری سینمایی و احساسی</p>
11983                        <p class="lang-en">Latest music video from Hich band with cinematic and emotional visuals</p>
11984                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="video-link lang-fa">تماشا در یوتیوب ←</a>
11985                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="video-link lang-en">Watch on YouTube →</a>
11986                    </div>
11987                </div>
11988
11989                <div class="video-card">
11990                    <div class="video-embed">
11991                        🎬
11992                    </div>
11993                    <div class="video-info">
11994                        <span class="video-type lang-fa">پشت صحنه</span>
11995                        <span class="video-type lang-en">Behind the Scenes</span>
11996                        <h3 class="video-title lang-fa">پشت صحنه استودیو</h3>
11997                        <h3 class="video-title lang-en">Studio Behind the Scenes</h3>
11998                        <p class="lang-fa">نگاهی به فرآیند خلاقیت و ساخت آهنگ‌های گروه هیچ</p>
11999                        <p class="lang-en">A look at the creative process and production of Hich band's songs</p>
12000                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="video-link lang-fa">تماشا در یوتیوب ←</a>
12001                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="video-link lang-en">Watch on YouTube →</a>
12002                    </div>
12003                </div>
12004            </div>
12005            <div class="view-all-btn">
12006                <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="lang-fa">مشاهده همه ویدیوها در یوتیوب</a>
12007                <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="lang-en">View All Videos on YouTube</a>
12008            </div>
12009        </div>
12010    </section>
12011
12012    <section class="section section-dark" id="news">
12013        <div class="container">
12014            <h2 class="section-title lang-fa">آخرین اخبار</h2>
12015            <h2 class="section-title lang-en">Latest News</h2>
12016            <div class="news-grid">
12017                <div class="news-card">
12018                    <div class="news-image">
12019                        📰
12020                    </div>
12021                    <div class="news-content">
12022                        <h3 class="news-title lang-fa">آهنگ جدید رکورد شکست</h3>
12023                        <h3 class="news-title lang-en">New Single Breaks Records</h3>
12024                        <p class="news-date lang-fa">۵ دسامبر ۲۰۲۴</p>
12025                        <p class="news-date lang-en">December 5, 2024</p>
12026                        <p class="news-excerpt lang-fa">آخرین آهنگ گروه هیچ در هفته اول بیش از ۱۰۰ هزار استریم داشت. از حمایت شما سپاسگزاریم...</p>
12027                        <p class="news-excerpt lang-en">Hich's latest song surpassed 100K streams in its first week. Thank you for your incredible support...</p>
12028                        <a href="#" class="read-more lang-fa">ادامه مطلب</a>
12029                        <a href="#" class="read-more lang-en">Read More</a>
12030                    </div>
12031                </div>
12032
12033                <div class="news-card">
12034                    <div class="news-image">
12035                        🎪
12036                    </div>
12037                    <div class="news-content">
12038                        <h3 class="news-title lang-fa">تورکنسرت ۲۰۲۵ اعلام شد</h3>
12039                        <h3 class="news-title lang-en">2025 Tour Dates Announced</h3>
12040                        <p class="news-date lang-fa">۲۰ نوامبر ۲۰۲۴</p>
12041                        <p class="news-date lang-en">November 20, 2024</p>
12042                        <p class="news-excerpt lang-fa">کنسرت‌های سال آینده گروه هیچ در شهرهای مختلف. بلیت‌های پیش‌فروش از همین حالا...</p>
12043                        <p class="news-excerpt lang-en">Hich's upcoming concerts in various cities. Presale tickets available now...</p>
12044                        <a href="#" class="read-more lang-fa">ادامه مطلب</a>
12045                        <a href="#" class="read-more lang-en">Read More</a>
12046                    </div>
12047                </div>
12048
12049                <div class="news-card">
12050                    <div class="news-image">
12051                        🎙️
12052                    </div>
12053                    <div class="news-content">
12054                        <h3 class="news-title lang-fa">سری ویدیوهای پشت صحنه استودیو</h3>
12055                        <h3 class="news-title lang-en">
12055Studio Diary Series Launches</h3>
12056                        <p class="news-date lang-fa">۲۸ اکتبر ۲۰۲۴</p>
12057                        <p class="news-date lang-en">October 28, 2024</p>
12058                        <p class="news-excerpt lang-fa">فرآیند ساخت آلبوم جدید را دنبال کنید. ویدیوهای جدید هر سه‌شنبه در یوتیوب...</p>
12059                        <p class="news-excerpt lang-en">Follow the making of our new album. New episodes every Tuesday on YouTube...</p>
12060                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="read-more lang-fa">تماشا کنید</a>
12061                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="read-more lang-en">Watch Now</a>
12062                    </div>
12063                </div>
12064            </div>
12065        </div>
12066    </section>
12067
12068    <footer class="main-footer">
12069        <div class="container">
12070            <div class="social-links">
12071                <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="social-link">📺</a>
12072                <a href="https://www.instagram.com/hichmusicbandofficial/" target="_blank" class="social-link">📷</a>
12073                <a href="https://www.tiktok.com/@hichofficial" target="_blank" class="social-link">🎵</a>
12074                <a href="https://www.facebook.com/hichmusicband" target="_blank" class="social-link">👥</a>
12075            </div>
12076            <p class="lang-fa">&copy; ۲۰۲۵ هیچ. تمامی حقوق محفوظ است.</p>
12077            <p class="lang-en">&copy; 2025 Hich. All rights reserved.</p>
12078        </div>
12079    </footer>
12080</div>
12081
12082<div id="bioPages">
12083<div id="bio-aria-kaviani" class="page-container bio-page">
12084            <div class="bio-header">
12085                <div class="container">
12086                    <a href="#artists" data-action="back" class="back-button lang-fa">← بازگشت به هنرمندان</a>
12087                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
12088                </div>
12089            </div>
12090            
12091            <div class="bio-content">
12092                <div class="container">
12093                    <div class="bio-card">
12094                        <div class="bio-image-section">
12095                            <img src="https://media.echovira.com/hich/hich_aria_kaviani_male_singer_portrait_0.png" alt="آریا کاویانی" class="bio-artist-image"
12096                srcset="https://media.echovira.com/hich/hich_aria_kaviani_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/hich/hich_aria_kaviani_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/hich/hich_aria_kaviani_male_singer_portrait_0-full.webp 1024w"
12097                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
12098                        </div>
12099                        <div class="bio-text-section">
12100                            <div class="bio-artist-title">
12101                                <h1 class="lang-fa">آریا کاویانی</h1>
12102                                <h1 class="lang-en">Aria Kaviani</h1>
12103                                <div class="stage-name lang-fa">"آریا" • 25 ساله</div>
12104                                <div class="stage-name lang-en">"Aria" • Age 25</div>
12105                                <div class="role lang-fa">خواننده مرد</div>
12106                                <div class="role lang-en">Male Singer</div>
12107                            </div>
12108                            <div class="bio-description lang-fa">
12109                                <p>آریا کاویانی — خواننده ۲۵ ساله و فرانت‌من کاریزماتیک گروه موسیقی پاپ راک ایرانی هیچ. با صدایی نرم اما پرقدرت، رنج وکال وسیع و حضور صحنه‌ای سینمایی، آریا قلب تپنده و هویت صوتی این گروه ایرانی است. او با تکنیک‌های دقیق خوانندگی، کنترل تنفس حرفه‌ای و رنگ صدای خاص و گرم که از موسیقی راک ایندی و فیلم‌اسکورهای مدرن الهام گرفته، نقش ستون اصلی صدای هیچ را ایفا می‌کند. آریا در اجراهای زنده و ضبط استودیویی قادر است از دینامیک‌های صمیمی و آرام تا اوج‌های احساسی و قدرتمند حرکت کند و این تنوع صدایی باعث شده که هیچ به یکی از برجسته‌ترین گروه‌های موسیقی فارسی معاصر تبدیل شود. او روی صحنه با حرکات ظریف اما فرمان‌دهنده، ژست‌های کوچک را به موج‌های انرژی تبدیل می‌کند و شکل‌دهنده فضای لایو و انرژی زنده هیچ است. به‌زودی موسیقی و آهنگ‌های جدیدی منتشر می‌شود که صدای آریا را در مرکز توجه قرار می‌دهد — آماده باشید برای تجربه‌ای سینمایی، عمیق و پرانرژی از بهترین موسیقی پاپ راک ایرانی.</p>
12110                            </div>
12111                            <div class="bio-description lang-en">
12112                                <p>Meet Aria Kaviani — Aria, 25, the charismatic frontman and lead male vocalist of Hich Iranian pop rock band. With smooth yet powerful vocals, an extensive vocal range, and a cinematic stage aura, Aria is the beating heart and sonic identity of this groundbreaking Persian music group. He brings professional vocal techniques, exceptional breath control, and a distinctive warm timbre influenced by indie rock and modern film scores, serving as the main pillar of Hich's unique sound. In live performances and studio recordings, Aria seamlessly moves from intimate, quiet dynamics to soaring, emotional climaxes — this vocal versatility has helped establish Hich as one of the most prominent contemporary Farsi music bands. On stage, with subtle yet commanding gestures, he transforms small movements into waves of energy, shaping Hich's live atmosphere and concert experience. His calm yet commanding presence, precise phrasing, and ability to turn intimate moments into full-band surges define Hich's performance energy. New music and singles featuring Aria's voice at the center are coming soon — get ready for a cinematic, deep, and high-energy experience of the best Iranian pop rock music available today.</p>
12113                            </div>
12114                        </div>
12115                    </div>
12116                </div>
12117            </div>
12118            
12119            <footer class="main-footer">
12120                <div class="container">
12121                    <div class="social-links">
12122                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="social-link">📺</a>
12123                        <a href="https://www.instagram.com/hichmusicbandofficial/" target="_blank" class="social-link">📷</a>
12124                        <a href="https://www.tiktok.com/@hichofficial" target="_blank" class="social-link">🎵</a>
12125                        <a href="https://www.facebook.com/hichmusicband" target="_blank" class="social-link">👥</a>
12126                    </div>
12127                    <p class="lang-fa">&copy; ۲۰۲۵ هیچ. تمامی حقوق محفوظ است.</p>
12128                    <p class="lang-en">&copy; 2025 Hich. All rights reserved.</p>
12129                </div>
12130            </footer>
12131        </div>
12132<div id="bio-ava-shirazi" class="page-container bio-page">
12133            <div class="bio-header">
12134                <div class="container">
12135                    <a href="#artists" data-action="back" class="back-button lang-fa">← بازگشت به هنرمندان</a>
12136                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
12137                </div>
12138            </div>
12139            
12140            <div class="bio-content">
12141                <div class="container">
12142                    <div class="bio-card">
12143                        <div class="bio-image-section">
12144                            <img src="https://media.echovira.com/hich/hich_ava_shirazi_female_singer_portrait_0.png" alt="آوا شیرازی" class="bio-artist-image"
12145                srcset="https://media.echovira.com/hich/hich_ava_shirazi_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/hich/hich_ava_shirazi_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/hich/hich_ava_shirazi_female_singer_portrait_0-full.
12145webp 1024w"
12146                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
12147                        </div>
12148                        <div class="bio-text-section">
12149                            <div class="bio-artist-title">
12150                                <h1 class="lang-fa">آوا شیرازی</h1>
12151                                <h1 class="lang-en">Ava Shirazi</h1>
12152                                <div class="stage-name lang-fa">"آوا" • 24 ساله</div>
12153                                <div class="stage-name lang-en">"Ava" • Age 24</div>
12154                                <div class="role lang-fa">خواننده زن</div>
12155                                <div class="role lang-en">Female Singer</div>
12156                            </div>
12157                            <div class="bio-description lang-fa">
12158                                <p>آوا شیرازی، خواننده زن ۲۴ ساله و یکی از صداهای اصلی گروه موسیقی ایرانی هیچ — جرقه‌ای روشن در دنیای موسیقی پاپ فارسی. با صدای شیرین اما قدرتمند، وکال روشن و جادویی که به تم‌های تاریک و عمیق نور و امید می‌بخشد، آوا نماد نسل جدید خوانندگان زن ایرانی است. انرژی صحنه‌ای فوق‌العاده، تسلط کامل روی ملودی‌ها و فریزینگ دقیق او باعث شده که صدایش هویت تازه و متمایزی به بافت صوتی هیچ ببخشد و قطعات این گروه پاپ راک ایرانی را عمیق‌تر، درخشان‌تر و احساسی‌تر کند. آوا در اجراهای لایو و استودیویی با حضور فوری و احساسی‌اش، لیریک‌های درون‌نگرانه را به لحظات رهایی و کاتارسیس تبدیل می‌کند و هم نرمی و هم قدرت را به هر کورس و رفرین می‌آورد. صدای او که از موسیقی پاپ معاصر، ایندی و سول الهام گرفته، خطوط ملودیک واضح و قوی ایجاد می‌کند که صدای هیچ را تثبیت و در ستهای لایو انرژی بی‌نظیری به گروه می‌بخشد. آوا نه تنها یک خواننده، بلکه یک پرفورمر کامل است که موسیقی فارسی مدرن را به سطحی جدید ارتقا می‌دهد.</p>
12159                            </div>
12160                            <div class="bio-description lang-en">
12161                                <p>Ava Shirazi — Ava, 24, one of the lead female vocalists of Hich Iranian music band and a bright spark in the Persian pop music world. With sweet yet powerful vocals, bright and magical pop voice that brings light and hope to darker, deeper themes, Ava represents the new generation of Iranian female singers. Her extraordinary stage energy, complete mastery of melodies, and precise phrasing have given Hich's sonic texture a fresh, distinctive identity, making this Iranian pop rock group's tracks deeper, brighter, and more emotional. In live performances and studio recordings, with her immediate and emotive presence, Ava transforms introspective lyrics into moments of release and catharsis, bringing both softness and power to every chorus and refrain. Her voice, inspired by contemporary pop, indie, and soul music, creates clear and strong melodic lines that anchor Hich's sound and bring unparalleled energy to the band's live sets. She turns every performance into an unforgettable experience with her vocal control, emotional depth, and stage charisma. Ava is not just a singer but a complete performer elevating modern Persian music to a new level of artistry and international recognition.</p>
12162                            </div>
12163                        </div>
12164                    </div>
12165                </div>
12166            </div>
12167            
12168            <footer class="main-footer">
12169                <div class="container">
12170                    <div class="social-links">
12171                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="social-link">📺</a>
12172                        <a href="https://www.instagram.com/hichmusicbandofficial/" target="_blank" class="social-link">📷</a>
12173                        <a href="https://www.tiktok.com/@hichofficial" target="_blank" class="social-link">🎵</a>
12174                        <a href="https://www.facebook.com/hichmusicband" target="_blank" class="social-link">👥</a>
12175                    </div>
12176                    <p class="lang-fa">&copy; ۲۰۲۵ هیچ. تمامی حقوق محفوظ است.</p>
12177                    <p class="lang-en">&copy; 2025 Hich. All rights reserved.</p>
12178                </div>
12179            </footer>
12180        </div>
12181<div id="bio-ella-farjad" class="page-container bio-page">
12182            <div class="bio-header">
12183                <div class="container">
12184                    <a href="#artists" data-action="back" class="back-button lang-fa">← بازگشت به هنرمندان</a>
12185                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
12186                </div>
12187            </div>
12188            
12189            <div class="bio-content">
12190                <div class="container">
12191                    <div class="bio-card">
12192                        <div class="bio-image-section">
12193                            <img src="https://media.echovira.com/hich/hich_ella_farjad_female_singer_portrait_1.png" alt="الا فرجاد" class="bio-artist-image"
12194                srcset="https://media.echovira.com/hich/hich_ella_farjad_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/hich/hich_ella_farjad_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/hich/hich_ella_farjad_female_singer_portrait_1-full.
12194webp 1024w"
12195                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
12196                        </div>
12197                        <div class="bio-text-section">
12198                            <div class="bio-artist-title">
12199                                <h1 class="lang-fa">الا فرجاد</h1>
12200                                <h1 class="lang-en">Ella Farjad</h1>
12201                                <div class="stage-name lang-fa">"الا" • 23 ساله</div>
12202                                <div class="stage-name lang-en">"Ella" • Age 23</div>
12203                                <div class="role lang-fa">خواننده زن</div>
12204                                <div class="role lang-en">Female Singer</div>
12205                            </div>
12206                            <div class="bio-description lang-fa">
12207                                <p>الا فرجاد، خواننده زن ۲۳ ساله گروه موسیقی هیچ — صدایی جوان، تازه، جسور و پیشرو در صنعت موسیقی پاپ فارسی. با رویکرد تجربی و انرژی نوآورانه‌اش، الا رنگ و طعم تازه‌ای به صدای این گروه پاپ راک ایرانی می‌افزاید. صدای او ترکیبی منحصربه‌فرد از لطافت و قدرت است؛ تمبر گرم و انعطاف‌پذیر با رنج وسیع، فریزینگ واضح و کنترل دینامیک دقیق که از موسیقی ایندی، الکترونیک و آلترناتیو شکل گرفته. الا با وکال مدرن و خلاقانه‌اش قطعات هیچ را به فضاهای نوآورانه الکترونیک، ایندی‌پاپ تجربی و ساندهای مدرن می‌برد و مرزهای موسیقی فارسی را جابه‌جا می‌کند. او در استودیو و روی صحنه با اجرای احساسی و پرفورمنس منحصربه‌فردش، آرنجمنت‌ها را شکل می‌دهد و به گروه هیچ هویتی تازه، جوان و بین‌المللی می‌بخشد. الا نماینده نسل Z موسیقی ایران است — نسلی که از قواعد قدیمی فراتر می‌رود و با خلاقیت، جسارت و صداقت هنری، آینده موسیقی فارسی را می‌سازد.</p>
12208                            </div>
12209                            <div class="bio-description lang-en">
12210                                <p>Ella Farjad — Ella, 23, the young female vocalist of Hich music band bringing a fresh, bold, and pioneering voice to the Persian pop music industry. With her experimental approach and innovative energy, Ella adds new colors and flavors to this Iranian pop rock group's sound. Her voice is a unique combination of delicacy and power; a warm, flexible timbre with wide range, clear phrasing, and precise dynamic control shaped by indie, electronic, and alternative music influences. With her modern and creative vocals, Ella takes Hich's tracks into innovative electronic spaces, experimental indie-pop territories, and contemporary sounds, pushing the boundaries of Persian music forward. In the studio and on stage, with her emotional delivery and unique performance style, she shapes arrangements and gives Hich a fresh, youthful, international identity. Ella represents Gen Z Iranian music — a generation that goes beyond old rules and builds the future of Farsi music with creativity, courage, and artistic honesty. Her vocal approach blends intimate moments with bold statements, creating memorable hooks and giving fans something truly different in the Persian music landscape.</p>
12211                            </div>
12212                        </div>
12213                    </div>
12214                </div>
12215            </div>
12216            
12217            <footer class="main-footer">
12218                <div class="container">
12219                    <div class="social-links">
12220                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="social-link">📺</a>
12221                        <a href="https://www.instagram.com/hichmusicbandofficial/" target="_blank" class="social-link">📷</a>
12222                        <a href="https://www.tiktok.com/@hichofficial" target="_blank" class="social-link">🎵</a>
12223                        <a href="https://www.facebook.com/hichmusicband" target="_blank" class="social-link">👥</a>
12224                    </div>
12225                    <p class="lang-fa">&copy; ۲۰۲۵ هیچ. تمامی حقوق محفوظ است.</p>
12226                    <p class="lang-en">&copy; 2025 Hich. All rights reserved.</p>
12227                </div>
12228            </footer>
12229        </div>
12230<div id="bio-elvin-shadmehr" class="page-container bio-page">
12231            <div class="bio-header">
12232                <div class="container">
12233                    <a href="#artists" data-action="back" class="back-button lang-fa">← بازگشت به هنرمندان</a>
12234                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
12235                </div>
12236            </div>
12237            
12238            <div class="bio-content">
12239                <div class="container">
12240                    <div class="bio-card">
12241                        <div class="bio-image-section">
12242                            <img src="https://media.echovira.com/hich/hich_elvin_shadmehr_male_singer_portrait_2.png" alt="الون شادمهر" class="bio-artist-image"
12243                srcset="https://media.echovira.com/hich/hich_elvin_shadmehr_male_singer_portrait_2-400.webp 400w, https://media.echovira.com/hich/hich_elvin_shadmehr_male_singer_portrait_2-800.webp 800w, https://media.echovira.com/hich/hich_elvin_shadmehr_male_singer_portrait_2-full.webp 1024w"
12244                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
12245                        </div>
12246                        <div class="bio-text-section">
12247                            <div class="bio-artist-title">
12248                                <h1 class="lang-fa">الون شادمهر</h1>
12249                                <h1 class="lang-en">Elvin Shadmehr</h1>
12250                                <div class="stage-name lang-fa">"الون" • 23 ساله</div>
12251                                <div class="stage-name lang-en">"Elvin" • Age 23</div>
12252                                <div class="role lang-fa">خواننده مرد</div>
12253                                <div class="role lang-en">Male Singer</div>
12254                            </div>
12255                            <div class="bio-description lang-fa">
12256                                <p>الون شادمهر، خواننده ۲۳ سالهٔ گروه هیچ — جرقهٔ جوانی و صدای پاپ مدرن و پرانرژی که با نسل جوان ارتباط می‌گیرد. صدای او گرم، پرانرژی و پویاست؛ تُن مدرن و اجرای احساسی‌اش هویت تازه‌ای به صدای هیچ بخشیده و روی صحنه می‌درخشد.</p>
12257                            </div>
12258                            <div class="bio-description lang-en">
12259                                <p>Elvin Shadmehr — Elvin, 23, the male singer of Hich. A fresh voice with a bold presence. He brings a youthful spark with an energetic, modern pop tone that c
12259onnects most with younger fans. As Hich's lead vocalist, Elvin's timbre, range and dynamic phrasing shape the band's melodic identity.</p>
12260                            </div>
12261                        </div>
12262                    </div>
12263                </div>
12264            </div>
12265            
12266            <footer class="main-footer">
12267                <div class="container">
12268                    <div class="social-links">
12269                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="social-link">📺</a>
12270                        <a href="https://www.instagram.com/hichmusicbandofficial/" target="_blank" class="social-link">📷</a>
12271                        <a href="https://www.tiktok.com/@hichofficial" target="_blank" class="social-link">🎵</a>
12272                        <a href="https://www.facebook.com/hichmusicband" target="_blank" class="social-link">👥</a>
12273                    </div>
12274                    <p class="lang-fa">&copy; ۲۰۲۵ هیچ. تمامی حقوق محفوظ است.</p>
12275                    <p class="lang-en">&copy; 2025 Hich. All rights reserved.</p>
12276                </div>
12277            </footer>
12278        </div>
12279<div id="bio-kavan-ramin" class="page-container bio-page">
12280            <div class="bio-header">
12281                <div class="container">
12282                    <a href="#artists" data-action="back" class="back-button lang-fa">← بازگشت به هنرمندان</a>
12283                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
12284                </div>
12285            </div>
12286            
12287            <div class="bio-content">
12288                <div class="container">
12289                    <div class="bio-card">
12290                        <div class="bio-image-section">
12291                            <img src="https://media.echovira.com/hich/hich_kavan_ramin_male_singer_portrait_1_1.png" alt="کاوان رامین" class="bio-artist-image"
12292                srcset="https://media.echovira.com/hich/hich_kavan_ramin_male_singer_portrait_1_1-400.webp 400w, https://media.echovira.com/hich/hich_kavan_ramin_male_singer_portrait_1_1-800.webp 800w, https://media.echovira.com/hich/hich_kavan_ramin_male_singer_portrait_1_1-full.webp 1024w"
12293                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
12294                        </div>
12295                        <div class="bio-text-section">
12296                            <div class="bio-artist-title">
12297                                <h1 class="lang-fa">کاوان رامین</h1>
12298                                <h1 class="lang-en">Kavan Ramin</h1>
12299                                <div class="stage-name lang-fa">"کاوان" • 26 ساله</div>
12300                                <div class="stage-name lang-en">"Kavan" • Age 26</div>
12301                                <div class="role lang-fa">خواننده مرد</div>
12302                                <div class="role lang-en">Male Singer</div>
12303                            </div>
12304                            <div class="bio-description lang-fa">
12305                                <p>کاوان رامین، ۲۶ ساله — خواننده گروه هیچ: صدای قدرتمند، خام و پرشور او سوخت و سازی که به صدای گروه می‌دهد. تُن خشن و اجرای انفجاری او لبهٔ تیز و هوک‌های فراموش‌نشدنی به هیچ می‌بخشد. روی صحنه و در استودیو، او انرژی بالا و دقت را به کار می‌گیرد و ملودی‌ها را به لحظاتی تبدیل می‌کند که به شدت تأثیرگذارند.</p>
12306                            </div>
12307                            <div class="bio-description lang-en">
12308                                <p>Kavan Ramin — Kavan, 26, Hich's new male singer. His powerful, raw, and intense voice brings grit and fire to Hich's sound. His timbre is raw and textured, with a wide expressive range, precise phrasing, and dynamic control shaped by rock and alternative influences. On record and live, his delivery reshapes arrangements.</p>
12309                            </div>
12310                        </div>
12311                    </div>
12312                </div>
12313            </div>
12314            
12315            <footer class="main-footer">
12316                <div class="container">
12317                    <div class="social-links">
12318                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="social-link">📺</a>
12319                        <a href="https://www.instagram.com/hichmusicbandofficial/" target="_blank" class="social-link">📷</a>
12320                        <a href="https://www.tiktok.com/@hichofficial" target="_blank" class="social-link">🎵</a>
12321                        <a href="https://www.facebook.com/hichmusicband" target="_blank" class="social-link">👥</a>
12322                    </div>
12323                    <p class="lang-fa">&copy; ۲۰۲۵ هیچ. تمامی حقوق محفوظ است.</p>
12324                    <p class="lang-en">&copy; 2025 Hich. All rights reserved.</p>
12325                </div>
12326            </footer>
12327        </div>
12328<div id="bio-kian-rad" class="page-container bio-page">
12329            <div class="bio-header">
12330                <div class="container">
12331                    <a href="#artists" data-action="back" class="back-button lang-fa">← بازگشت به هنرمندان</a>
12332                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
12333                </div>
12334            </div>
12335            
12336            <div class="bio-content">
12337                <div class="container">
12338                    <div class="bio-card">
12339                        <div class="bio-image-section">
12340                            <img src="https://media.echovira.com/hich/hich_kian_rad_male_singer_portrait_1.png" alt="کیان راد" class="bio-artist-image"
12341                srcset="https://media.echovira.com/hich/hich_kian_rad_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/hich/hich_kian_rad_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/hich/hich_kian_rad_male_singer_portrait_1-full.
12341webp 1024w"
12342                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
12343                        </div>
12344                        <div class="bio-text-section">
12345                            <div class="bio-artist-title">
12346                                <h1 class="lang-fa">کیان راد</h1>
12347                                <h1 class="lang-en">Kian Rad</h1>
12348                                <div class="stage-name lang-fa">"کیان" • 24 ساله</div>
12349                                <div class="stage-name lang-en">"Kian" • Age 24</div>
12350                                <div class="role lang-fa">خواننده مرد</div>
12351                                <div class="role lang-en">Male Singer</div>
12352                            </div>
12353                            <div class="bio-description lang-fa">
12354                                <p>کیان راد، ۲۴ ساله؛ خواننده گروه هیچ — صدایی چندوجهی که بین بالادهای احساسی و قطعات پرانرژی تعادل برقرار می‌کند. حضور او در هارمونی‌های گروه هیچ، رنگ و حرکت تازه‌ای به ترکیب ما داده و انرژی صحنه و عمق استودیو را تقویت می‌کند.</p>
12355                            </div>
12356                            <div class="bio-description lang-en">
12357                                <p>Kian Rad — Kian, 24, the new male singer of Hich. A versatile voice that balances emotional ballads with upbeat tracks. His warm, expressive timbre, wide range, and attentive phrasing bring dynamic contrasts on record and a commanding stage presence influenced by Persian pop and alternative soul.</p>
12358                            </div>
12359                        </div>
12360                    </div>
12361                </div>
12362            </div>
12363            
12364            <footer class="main-footer">
12365                <div class="container">
12366                    <div class="social-links">
12367                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="social-link">📺</a>
12368                        <a href="https://www.instagram.com/hichmusicbandofficial/" target="_blank" class="social-link">📷</a>
12369                        <a href="https://www.tiktok.com/@hichofficial" target="_blank" class="social-link">🎵</a>
12370                        <a href="https://www.facebook.com/hichmusicband" target="_blank" class="social-link">👥</a>
12371                    </div>
12372                    <p class="lang-fa">&copy; ۲۰۲۵ هیچ. تمامی حقوق محفوظ است.</p>
12373                    <p class="lang-en">&copy; 2025 Hich. All rights reserved.</p>
12374                </div>
12375            </footer>
12376        </div>
12377<div id="bio-liana-khosravi" class="page-container bio-page">
12378            <div class="bio-header">
12379                <div class="container">
12380                    <a href="#artists" data-action="back" class="back-button lang-fa">← بازگشت به هنرمندان</a>
12381                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
12382                </div>
12383            </div>
12384            
12385            <div class="bio-content">
12386                <div class="container">
12387                    <div class="bio-card">
12388                        <div class="bio-image-section">
12389                            <img src="https://media.echovira.com/hich/hich_liana_khosravi_female_singer_portrait_0.png" alt="لیانا خسروی" class="bio-artist-image"
12390                srcset="https://media.echovira.com/hich/hich_liana_khosravi_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/hich/hich_liana_khosravi_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/hich/hich_liana_khosravi_female_singer_portrait_0-full.webp 1024w"
12391                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
12392                        </div>
12393                        <div class="bio-text-section">
12394                            <div class="bio-artist-title">
12395                                <h1 class="lang-fa">لیانا خسروی</h1>
12396                                <h1 class="lang-en">Liana Khosravi</h1>
12397                                <div class="stage-name lang-fa">"لیانا" • 25 ساله</div>
12398                                <div class="stage-name lang-en">"Liana" • Age 25</div>
12399                                <div class="role lang-fa">خواننده زن</div>
12400                                <div class="role lang-en">Female Singer</div>
12401                            </div>
12402                            <div class="bio-description lang-fa">
12403                                <p>لیانا خسروی، خواننده Û²Ûµ سالهٔ گروه هیچ — نیرویی پاپ با صدای قدرتمند و استایل چشم‌گیر. صدای گرم و پرانرژی او، اجرای قÙ
12403ˆÛŒ و حضور صحنه‌ای‌اش روح تازه‌ای به صدای گروه هیچ بخشیده و قطعات را به جلو می‌برد.</p>
12404                            </div>
12405                            <div class="bio-description lang-en">
12406                                <p>Liana Khosravi — Liana, 25, the female singer of Hich. A pop powerhouse with strong vocals and a striking fashion sense. Her vocal tone anchors Hich's sound, turning arrangements into memorable hooks and giving songs an intimate, immediate center.</p>
12407                            </div>
12408                        </div>
12409                    </div>
12410                </div>
12411            </div>
12412            
12413            <footer class="main-footer">
12414                <div class="container">
12415                    <div class="social-links">
12416                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="social-link">📺</a>
12417                        <a href="https://www.instagram.com/hichmusicbandofficial/" target="_blank" class="social-link">📷</a>
12418                        <a href="https://www.tiktok.com/@hichofficial" target="_blank" class="social-link">🎵</a>
12419                        <a href="https://www.facebook.com/hichmusicband" target="_blank" class="social-link">👥</a>
12420                    </div>
12421                    <p class="lang-fa">&copy; ۲۰۲۵ هیچ. تمامی حقوق محفوظ است.</p>
12422                    <p class="lang-en">&copy; 2025 Hich. All rights reserved.</p>
12423                </div>
12424            </footer>
12425        </div>
12426<div id="bio-mahla-parsa" class="page-container bio-page">
12427            <div class="bio-header">
12428                <div class="container">
12429                    <a href="#artists" data-action="back" class="back-button lang-fa">← بازگشت به هنرمندان</a>
12430                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
12431                </div>
12432            </div>
12433            
12434            <div class="bio-content">
12435                <div class="container">
12436                    <div class="bio-card">
12437                        <div class="bio-image-section">
12438                            <img src="https://media.echovira.com/hich/hich_mahla_parsa_female_singer_portrait_0.png" alt="مهلا پارسا" class="bio-artist-image"
12439                srcset="https://media.echovira.com/hich/hich_mahla_parsa_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/hich/hich_mahla_parsa_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/hich/hich_mahla_parsa_female_singer_portrait_0-full.webp 1024w"
12440                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
12441                        </div>
12442                        <div class="bio-text-section">
12443                            <div class="bio-artist-title">
12444                                <h1 class="lang-fa">مهلا پارسا</h1>
12445                                <h1 class="lang-en">Mahla Parsa</h1>
12446                                <div class="stage-name lang-fa">"مهلا" • 27 ساله</div>
12447                                <div class="stage-name lang-en">"Mahla" • Age 27</div>
12448                                <div class="role lang-fa">خواننده زن</div>
12449                                <div class="role lang-en">Female Singer</div>
12450                            </div>
12451                            <div class="bio-description lang-fa">
12452                                <p>مهلا پارسا، ۲۷ ساله، خواننده گروه \xabهیچ\xbb — صدای مِزو گرم و پرحساسی که اوج و فرود را به تعادل می‌رساند. با ظرافت روحانی و انرژی چشمگیر روی صحنه، مهلا روح تازه‌ای به رنگ و بافت موسیقی هیچ می‌بخشد. صدای او ستون عاطفی قطعات جدید ماست.</p>
12453                            </div>
12454                            <div class="bio-description lang-en">
12455                                <p>Mahla Parsa — Mahla, 27, the new female singer of Hich. Her sound is soulful and elegant: a rich mezzo timbre that balances soaring highs with warm lows. As the band's lead vocalist she shapes Hich's sonic identity, turning studio arrangements into intense live momentum.</p>
12456                            </div>
12457                        </div>
12458                    </div>
12459                </div>
12460            </div>
12461            
12462            <footer class="main-footer">
12463                <div class="container">
12464                    <div class="social-links">
12465                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="social-link">📺</a>
12466                        <a href="https://www.instagram.com/hichmusicbandofficial/" target="_blank" class="social-link">📷</a>
12467                        <a href="https://www.tiktok.com/@hichofficial" target="_blank" class="social-link">🎵</a>
12468                        <a href="https://www.facebook.com/hichmusicband" target="_blank" class="social-link">👥</a>
12469                    </div>
12470                    <p class="lang-fa">&copy; ۲۰۲۵ هیچ. تمامی حقوق محفوظ است.</p>
12471                    <p class="lang-en">&copy; 2025 Hich. All rights reserved.</p>
12472                </div>
12473            </footer>
12474        </div>
12475<div id="bio-piroz-danesh" class="page-container bio-page">
12476            <div class="bio-header">
12477                <div class="container">
12478                    <a href="#artists" data-action="back" class="back-button lang-fa">← بازگشت به هنرمندان</a>
12479                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
12480                </div>
12481            </div>
12482            
12483            <div class="bio-content">
12484                <div class="container">
12485                    <div class="bio-card">
12486                        <div class="bio-image-section">
12487                            <img src="https://media.echovira.com/hich/hich_piroz_danesh_male_singer_portrait_0.png" alt="پیروز دانش" class="bio-artist-image"
12488                srcset="https://media.echovira.com/hich/hich_piroz_danesh_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/hich/hich_piroz_danesh_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/hich/hich_piroz_danesh_male_singer_portrait_0-full.
12488webp 1024w"
12489                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
12490                        </div>
12491                        <div class="bio-text-section">
12492                            <div class="bio-artist-title">
12493                                <h1 class="lang-fa">پیروز دانش</h1>
12494                                <h1 class="lang-en">Piroz Danesh</h1>
12495                                <div class="stage-name lang-fa">"پیروز" • 27 ساله</div>
12496                                <div class="stage-name lang-en">"Piroz" • Age 27</div>
12497                                <div class="role lang-fa">خواننده مرد</div>
12498                                <div class="role lang-en">Male Singer</div>
12499                            </div>
12500                            <div class="bio-description lang-fa">
12501                                <p>پیروز دانش، خواننده ۲۷ سالهٔ بند \xabهیچ\xbb؛ باریتون غنی و پرعمق که هارمونی‌ها را تثبیت می‌کند و به آهنگ‌ها وزن می‌دهد. صدای پیروز گرم، پر احساس و با انرژی صحنه‌ای است که قلب هر قطعهٔ ما را تکان می‌دهد.</p>
12502                            </div>
12503                            <div class="bio-description lang-en">
12504                                <p>Piroz Danesh — Piroz, 27, male singer of Hich. The baritone anchor: a rich, deep voice that stabilizes the band's harmonies. His steady low register and controlled warmth give Hich its harmonic foundation and shape the studio arrangements.</p>
12505                            </div>
12506                        </div>
12507                    </div>
12508                </div>
12509            </div>
12510            
12511            <footer class="main-footer">
12512                <div class="container">
12513                    <div class="social-links">
12514                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="social-link">📺</a>
12515                        <a href="https://www.instagram.com/hichmusicbandofficial/" target="_blank" class="social-link">📷</a>
12516                        <a href="https://www.tiktok.com/@hichofficial" target="_blank" class="social-link">🎵</a>
12517                        <a href="https://www.facebook.com/hichmusicband" target="_blank" class="social-link">👥</a>
12518                    </div>
12519                    <p class="lang-fa">&copy; ۲۰۲۵ هیچ. تمامی حقوق محفوظ است.</p>
12520                    <p class="lang-en">&copy; 2025 Hich. All rights reserved.</p>
12521                </div>
12522            </footer>
12523        </div>
12524<div id="bio-roxin-bahrami" class="page-container bio-page">
12525            <div class="bio-header">
12526                <div class="container">
12527                    <a href="#artists" data-action="back" class="back-button lang-fa">← بازگشت به هنرمندان</a>
12528                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
12529                </div>
12530            </div>
12531            
12532            <div class="bio-content">
12533                <div class="container">
12534                    <div class="bio-card">
12535                        <div class="bio-image-section">
12536                            <img src="https://media.echovira.com/hich/hich_roxin_bahrami_multi_instrumentalist_portrait_0.png" alt="روکسین بهرامی" class="bio-artist-image"
12537                srcset="https://media.echovira.com/hich/hich_roxin_bahrami_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/hich/hich_roxin_bahrami_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/hich/hich_roxin_bahrami_multi_instrumentalist_portrait_0-full.webp 1024w"
12538                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
12539                        </div>
12540                        <div class="bio-text-section">
12541                            <div class="bio-artist-title">
12542                                <h1 class="lang-fa">روکسین بهرامی</h1>
12543                                <h1 class="lang-en">Roxin Bahrami</h1>
12544                                <div class="stage-name lang-fa">"روکسین" • 25 ساله</div>
12545                                <div class="stage-name lang-en">"Roxin" • Age 25</div>
12546                                <div class="role lang-fa">نوازنده چندساز</div>
12547                                <div class="role lang-en">Multi-Instrumentalist</div>
12548                            </div>
12549                            <div class="bio-description lang-fa">
12550                                <p>روکسین بهرامی، نوازندهٔ چندسازهٔ ۲۵ سالهٔ گروه هیچ — دست‌های جادویی که صدای گروه را شکل می‌دهند. او با ترکیب مینیمالیسم پیانو، گیتار بافت‌دار و المان‌های الکترونیک، به آهنگ‌ها رنگ و بافتی منحصر‌به‌فرد می‌بخشد.</p>
12551                            </div>
12552                            <div class="bio-description lang-en">
12553                                <p>Roxin Bahrami — Roxin, 25, the multi-instrumentalist of Hich. His work fuses piano minimalism with textured guitar and electronic layers. As a pianist and guitarist he favors sparse, deliberate piano voicings, warm guitar textures, and nimble improvisation that anchor the band's grooves.</p>
12554                            </div>
12555                        </div>
12556                    </div>
12557                </div>
12558            </div>
12559            
12560            <footer class="main-footer">
12561                <div class="container">
12562                    <div class="social-links">
12563                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="social-link">📺</a>
12564                        <a href="https://www.instagram.com/hichmusicbandofficial/" target="_blank" class="social-link">📷</a>
12565                        <a href="https://www.tiktok.com/@hichofficial" target="_blank" class="social-link">🎵</a>
12566                        <a href="https://www.facebook.com/hichmusicband" target="_blank" class="social-link">👥</a>
12567                    </div>
12568                    <p class="lang-fa">&copy; ۲۰۲۵ هیچ. تمامی حقوق محفوظ است.</p>
12569                    <p class="lang-en">&copy; 2025 Hich. All rights reserved.</p>
12570                </div>
12571            </footer>
12572        </div>
12573<div id="bio-selin-khosrowshahi" class="page-container bio-page">
12574            <div class="bio-header">
12575                <div class="container">
12576                    <a href="#artists" data-action="back" class="back-button lang-fa">← بازگشت به هنرمندان</a>
12577                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
12578                </div>
12579            </div>
12580            
12581            <div class="bio-content">
12582                <div class="container">
12583                    <div class="bio-card">
12584                        <div class="bio-image-section">
12585                            <img src="https://media.echovira.com/hich/hich_selin_khosrowshahi_composer_lyricist_portrait_1.png" alt="سلین خسروشاهی" class="bio-artist-image"
12586                srcset="https://media.echovira.com/hich/hich_selin_khosrowshahi_composer_lyricist_portrait_1-400.webp 400w, https://media.echovira.com/hich/hich_selin_khosrowshahi_composer_lyricist_portrait_1-800.webp 800w, https://media.echovira.com/hich/hich_selin_khosrowshahi_composer_lyricist_portrait_1-full.
12586webp 1024w"
12587                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
12588                        </div>
12589                        <div class="bio-text-section">
12590                            <div class="bio-artist-title">
12591                                <h1 class="lang-fa">سلین خسروشاهی</h1>
12592                                <h1 class="lang-en">Selin Khosrowshahi</h1>
12593                                <div class="stage-name lang-fa">"سلین" • 26 ساله</div>
12594                                <div class="stage-name lang-en">"Selin" • Age 26</div>
12595                                <div class="role lang-fa">آهنگساز و ترانه‌سرا</div>
12596                                <div class="role lang-en">Composer & Lyricist</div>
12597                            </div>
12598                            <div class="bio-description lang-fa">
12599                                <p>سلین خسروشاهی، ۲۶ ساله — آهنگساز، کامپوزر و ترانه‌سرا و معمار موسیقایی گروه هیچ. او شعرهای عمیق، هستی‌گرا، فلسفی و شاعرانه می‌نویسد و ملودی‌هایی خلق می‌کند که هویت صوتی و شخصیت موسیقایی این گروه پاپ راک ایرانی را شکل می‌دهند. فرآیند خلاقیت سلین ترکیبی منحصربه‌فرد از کنجکاوی فلسفی، حس ادبی عمیق و گوش موسیقایی دقیق و حرفه‌ای است که به آهنگ‌های هیچ عمق، بافت و کیفیت استثنایی می‌بخشد. به‌عنوان کامپوزر، سلین ملودی‌هایی می‌سازد که توسعه موتیف را با چرخش‌های هارمونیک غیرمنتظره و ساختارهای آهنگ واضح ترکیب می‌کنند و آثاری خلق می‌کنند که هم از نظر موسیقایی پیچیده و هم از نظر احساسی قابل دسترس هستند. به‌عنوان ترانه‌سرا، او از تصویرسازی تند و صریح، داستان‌سرایی تأملی و کادانس عمدی استفاده می‌کند تا احساسات درون هر خط شعر به‌طور تمیز و زیبا جای بگیرند. سلین از پیانو شروع می‌کند، لایه‌بندی بافت‌ها را در استودیو انجام می‌دهد و کلمات را پالایش می‌کند تا نفس بکشند. نوشته‌های او هویت هیچ را هدایت می‌کنند و داستان‌سرایی صمیمی را در صدای قدرتمند و سرودگونه گروه می‌بافند. او قلب خلاق و ذهن هنری هیچ است.</p>
12600                            </div>
12601                            <div class="bio-description lang-en">
12602                                <p>Selin Khosrowshahi — Selin, 26, composer, songwriter, lyricist, and musical architect of Hich band. She writes deep, existential, philosophical, and poetic lyrics while creating melodies that shape the sonic identity and musical personality of this Iranian pop rock group. Selin's creative process is a unique combination of philosophical curiosity, deep literary sensibility, and precise, professional musical ear that brings exceptional depth, texture, and quality to Hich's songs. As a composer, Selin crafts melodies that blend motif development with unexpected harmonic turns and clear song structures, creating works that are both musically complex and emotionally accessible. As a lyricist, she uses stark, vivid imagery, contemplative storytelling, and deliberate cadence to let feelings sit cleanly and beautifully inside each line. Selin starts at the piano, layers textures in the studio, and refines words until they breathe with life and meaning. Her writing drives Hich's identity, weaving intimate storytelling into the band's powerful, anthemic sound. She sketches musical ideas, develops harmonic progressions, and shapes the emotional arc of each song from conception to final production. Selin is the creative heart and artistic mind of Hich, the visionary behind the Persian music that connects with audie
12602nces worldwide.</p>
12603                            </div>
12604                        </div>
12605                    </div>
12606                </div>
12607            </div>
12608            
12609            <footer class="main-footer">
12610                <div class="container">
12611                    <div class="social-links">
12612                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="social-link">📺</a>
12613                        <a href="https://www.instagram.com/hichmusicbandofficial/" target="_blank" class="social-link">📷</a>
12614                        <a href="https://www.tiktok.com/@hichofficial" target="_blank" class="social-link">🎵</a>
12615                        <a href="https://www.facebook.com/hichmusicband" target="_blank" class="social-link">👥</a>
12616                    </div>
12617                    <p class="lang-fa">&copy; ۲۰۲۵ هیچ. تمامی حقوق محفوظ است.</p>
12618                    <p class="lang-en">&copy; 2025 Hich. All rights reserved.</p>
12619                </div>
12620            </footer>
12621        </div>
12622<div id="bio-tara-nouri" class="page-container bio-page">
12623            <div class="bio-header">
12624                <div class="container">
12625                    <a href="#artists" data-action="back" class="back-button lang-fa">← بازگشت به هنرمندان</a>
12626                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
12627                </div>
12628            </div>
12629            
12630            <div class="bio-content">
12631                <div class="container">
12632                    <div class="bio-card">
12633                        <div class="bio-image-section">
12634                            <img src="https://media.echovira.com/hich/hich_tara_nouri_female_singer_portrait_1.png" alt="تارا نوری" class="bio-artist-image"
12635                srcset="https://media.echovira.com/hich/hich_tara_nouri_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/hich/hich_tara_nouri_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/hich/hich_tara_nouri_female_singer_portrait_1-full.webp 1024w"
12636                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
12637                        </div>
12638                        <div class="bio-text-section">
12639                            <div class="bio-artist-title">
12640                                <h1 class="lang-fa">تارا نوری</h1>
12641                                <h1 class="lang-en">Tara Nouri</h1>
12642                                <div class="stage-name lang-fa">"تارا" • 26 ساله</div>
12643                                <div class="stage-name lang-en">"Tara" • Age 26</div>
12644                                <div class="role lang-fa">خواننده زن</div>
12645                                <div class="role lang-en">Female Singer</div>
12646                            </div>
12647                            <div class="bio-description lang-fa">
12648                                <p>تارا نوری، خواننده ۲۶سالهٔ گروه هیچ — سوپرانوی دیوا با صدایی اوج‌گیر و احساسی که لحظات سینمایی خلق می‌کند. صدای او لایه‌ای درخشان به بافت صوتی هیچ می‌افزاید و انرژی و ظرافت را هم‌زمان به قطعات می‌آورد.</p>
12649                            </div>
12650                            <div class="bio-description lang-en">
12651                                <p>Tara Nouri — Tara, 26, the singer of Hich. A soprano with a luminous, soaring tone whose phrasing makes cinematic moments. Her timbre is bright and clear, able to reach high soprano notes with controlled dynamics and rich overtones.</p>
12652                            </div>
12653                        </div>
12654                    </div>
12655                </div>
12656            </div>
12657            
12658            <footer class="main-footer">
12659                <div class="container">
12660                    <div class="social-links">
12661                        <a href="https://www.youtube.com/@HichOfficial" target="_blank" class="social-link">📺</a>
12662                        <a href="https://www.instagram.com/hichmusicbandofficial/" target="_blank" class="social-link">📷</a>
12663                        <a href="https://www.tiktok.com/@hichofficial" target="_blank" class="social-link">🎵</a>
12664                        <a href="https://www.facebook.com/hichmusicband" target="_blank" class="social-link">👥</a>
12665                    </div>
12666                    <p class="lang-fa">&copy; ۲۰۲۵ هیچ. تمامی حقوق محفوظ است.</p>
12667                    <p class="lang-en">&copy; 2025 Hich. All rights reserved.</p>
12668                </div>
12669            </footer>
12670        </div>
12671</div>
12672
12673
12674
12675<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
12676  <nav aria-label="Site pages">
12677    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
12678    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
12679    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
12680    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
12681  </nav>
12682  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
12683</footer>
12684`;e.s(["HichEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=(0,t.injectFluidCanvas)(a,"#a04010","#0d1117",.28);function s(e){document.body.classList.remove("lang-fa","lang-en"),document.body.classList.add("lang-"+e),a.querySelectorAll("[data-lang]").forEach(e
12684=>e.classList.remove("active")),a.querySelector(`[data-lang="${e}"]`)?.classList.add("active")}function r(e){let a=document.getElementById("mainPage"),i=document.getElementById("bio-"+e);a&&i&&(a.classList.remove("active"),document.querySelectorAll(".bio-page").forEach(e=>e.classList.remove("active")),i.classList.add("active"),window.scrollTo(0,0))}function n(){document.querySelectorAll(".page-container").forEach(e=>e.classList.remove("active")),document.getElementById("mainPage")?.classList.add("active"),window.scrollTo(0,0)}function o(e){let a=e.target,i=a.closest("[data-artist-id]");if(i){e.preventDefault(),r(i.dataset.artistId);return}if(a.closest('[data-action="back"]')){e.preventDefault(),n();return}}window.setLanguage=s,s("fa"),a.querySelector('[data-lang="fa"]')?.addEventListener("click",()=>s("fa")),a.querySelector('[data-lang="en"]')?.addEventListener("click",()=>s("en")),window.showArtistBio=r,window.showMainPage=n,window.hideBioPage=n;let l=document.getElementById("mobileToggle"),c=document.getElementById("navMenu");l&&c&&l.addEventListener("click",()=>c.classList.toggle("active"));let d=()=>document.getElementById("mainNav")?.classList.toggle("scrolled",window.scrollY>100);return a.addEventListener("click",o),window.addEventListener("scroll",d),()=>{i(),a.removeEventListener("click",o),window.removeEventListener("scroll",d),delete window.setLanguage,delete window.showArtistBio,delete window.showMainPage,delete window.hideBioPage}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,className:"echovira-page-root",dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(n)},suppressHydrationWarning:!0}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},867064,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n=`
12685    <link rel="preconnect" href="https://fonts.googleapis.com">
12686    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
12687    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700&family=Noto+Serif+SC:wght@400;600;700&display=swap" rel="stylesheet">
12688    <style>
12689        /* WordPress Full Width Override */
12690        .vc_row[data-vc-full-width], .wpb_column, .vc_column_container, .wpb_wrapper, .entry-content, .site-content-contain, #content, .site-content, .site, #page, main {
12691            width: 100% !important;
12692            max-width: 100% !important;
12693            padding: 0 !important;
12694            margin: 0 !important;
12695            margin-top: 0 !important;
12696            padding-top: 0 !important;
12697        }
12698
12699        /* Chinese Colors Theme */
12700        :root {
12701            --ev-bg: #fafafa;
12702            --ev-fg: #2c2c2c;
12703            --primary-color: #1a1a1a;
12704            --secondary-color: #DC143C;
12705            --accent-color: #FFD700;
12706            --jade-green: #00A86B;
12707            --text-light: #ffffff;
12708            --text-dark: #2c2c2c;
12709            --background-dark: #0a0a0a;
12710            --background-light: #fafafa;
12711            --gradient-main: linear-gradient(135deg, #DC143C 0%, #FFD700 100%);
12712            --shadow-light: 0 2px 20px rgba(0,0,0,0.1);
12713            --shadow-heavy: 0 10px 40px rgba(0,0,0,0.2);
12714            --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
12715        }
12716
12717        * {
12718            margin: 0;
12719            padding: 0;
12720            box-sizing: border-box;
12721        }
12722
12723        body {
12724            font-family: 'Noto Sans SC', -apple-system, sans-serif;
12725            line-height: 1.8;
12726            color: var(--ev-fg);
12727            background: var(--ev-bg);
12728            overflow-x: hidden;
12729            margin: 0 !important;
12730            padding: 0 !important;
12731        }
12732
12733        /* Hide inactive language */
12734        body:not(.lang-zh) .lang-zh { display: none !important; }
12735        body:not(.lang-en) .lang-en { display: none !important; }
12736
12737        /* Language Toggle */
12738        .lang-toggle {
12739            position: absolute;
12740            top: 20px;
12741            right: 20px;
12742            z-index: 1001;
12743            background: rgba(255,255,255,0.2);
12744            border-radius: 25px;
12745            padding: 8px;
12746            backdrop-filter: blur(10px);
12747        }
12748
12749        .lang-toggle button {
12750            background: transparent;
12751            border: none;
12752            padding: 8px 16px;
12753            cursor: pointer;
12754            font-weight: 600;
12755            border-radius: 20px;
12756            transition: var(--transition);
12757            font-size: 0.9rem;
12758            color: white;
12759        }
12760
12761        .lang-toggle button.active {
12762            background: var(--secondary-color);
12763            color: white;
12764        }
12765
12766        /* Navigation */
12767        .main-nav {
12768            position: fixed;
12769            top: 0;
12770            left: 0;
12771            right: 0;
12772            background: rgba(10, 10, 10, 0.95);
12773            backdrop-filter: blur(20px);
12774            z-index: 1000;
12775            padding: 1rem 0;
12776            border-bottom: 1px solid rgba(220, 20, 60, 0.3);
12777        }
12778
12779        .nav-container {
12780            max-width: 1200px;
12781            margin: 0 auto;
12782            padding: 0 20px;
12783            padding-right: 210px;
12784            display: flex;
12785            justify-content: space-between;
12786            align-items: center;
12787        }
12788
12789        .logo img { height: 50px; }
12790
12791        .nav-menu {
12792            display: flex;
12793            list-style: none;
12794            gap: 2rem;
12795        }
12796
12797        .nav-menu a {
12798            color: var(--text-light);
12799            text-decoration: none;
12800            font-weight: 500;
12801            transition: var(--transition);
12802        }
12803
12804        .nav-menu a:hover { color: var(--accent-color); }
12805
12806        .mobile-menu-toggle {
12807            display: none;
12808            background: none;
12809            border: none;
12810            color: var(--text-light);
12811            font-size: 1.5rem;
12812            cursor: pointer;
12813        }
12814
12815        /* Hero Section */
12816        .hero-section {
12817            min-height: 100vh;
12818            /* Gradient's worst-case stop (#FFD700 gold) blended with the
12819               55% black ::after scrim below — the real effective
12820               background white hero text renders against. Testing
12821               convention: the ADA crawler can't see gradients (only
12822               background-color), so it falls through to a near-white
12823               default and reports white-on-white unless a solid stand-in
12824               is declared here. */
12825            --ada-contrast-bg: #736100;
12826            background: var(--gradient-main);
12827            display: flex;
12828            align-items: center;
12829            justify-content: center;
12830            text-align: center;
12831            color: var(--text-light);
12832            position: relative;
12833            overflow: hidden;
12834        }
12835
12836        .hero-section::before {
12837            content: '';
12838            position: absolute;
12839            top: 0;
12840            left: 0;
12841            right: 0;
12842            bottom: 0;
12843            background: radial-gradient(circle at 50% 0%, rgba(255,255,255,0.1) 0%, transparent 50%);
12844        }
12845
12846        .hero-section::after {
12847            /* White hero text on the gradient's lighter (gold) stop is
12848               only 1.43:1. This scrim darkens it to ~6:1 without
12849               flattening the brand gradient into a solid color. */
12850            content: '';
12851            position: absolute;
12852            inset: 0;
12853            background: rgba(0, 0, 0, 0.55);
12854            z-index: 1;
12855        }
12856
12857        .hero-content {
12858            position: relative;
12859            z-index: 2;
12860            max-width: 900px;
12861            padding: 0 20px;
12862        }
12863
12864        .hero-title {
12865            font-family: 'Noto Serif SC', serif;
12866            font-size: clamp(3rem, 8vw, 6rem);
12867            margin-bottom: 1rem;
12868            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
12869            font-weight: 700;
12870        }
12871
12872        .hero-subtitle {
12873            font-size: clamp(1rem, 2vw, 1.3rem);
12874            margin-bottom: 2rem;
12875            opacity: 0.9;
12876            line-height: 1.6;
12877        }
12878
12879        .cta-button {
12880            display: inline-block;
12881            padding: 18px 40px;
12882            background: white;
12883            color: var(--secondary-color);
12884            text-decoration: none;
12885            border-radius: 50px;
12886            font-weight: 600;
12887            font-size: 1.1rem;
12888            transition: var(--transition);
12889            box-shadow: var(--shadow-light);
12890        }
12891
12892        .cta-button:hover {
12893            transform: translateY(-3px);
12894            box-shadow: var(--shadow-heavy);
12895            background: var(--accent-color);
12896        }
12897
12898        /* Sections */
12899        .section {
12900            padding: 80px 0;
12901        }
12902
12903        .section-dark {
12904            background: var(--background-dark);
12905            color: var(--text-light);
12906        }
12907
12908        .container {
12909            max-width: 1200px;
12910            margin: 0 auto;
12911            padding: 0 20px;
12912        }
12913
12914        .section-title {
12915            text-align: center;
12916            font-size: 2.5rem;
12917            margin-bottom: 3rem;
12918            position: relative;
12919            font-family: 'Noto Serif SC', serif;
12920            font-weight: 700;
12921        }
12922
12923        .section-title::after {
12924            content: '';
12925            position: absolute;
12926            bottom: -10px;
12927            left: 50%;
12928            transform: translateX(-50%);
12929            width: 80px;
12930            height: 3px;
12931            background: var(--secondary-color);
12932            border-radius: 2px;
12933        }
12934
12935        .about-content {
12936            max-width: 900px;
12937            margin: 0 auto;
12938            text-align: center;
12939            line-height: 2;
12940            font-size: 1.1rem;
12941        }
12942
12943        .about-content p {
12944            margin-bottom: 1.5rem;
12945        }
12946
12947        /* Artists Gallery */
12948        .artists-gallery {
12949            display: grid;
12950            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
12951            gap: 2.5rem;
12952            margin-top: 3rem;
12953        }
12954
12955        .artist-card {
12956            position: relative;
12957            cursor: pointer;
12958            transition: var(--transition);
12959            background: white;
12960            border-radius: 20px;
12961            overflow: hidden;
12962            box-shadow: var(--shadow-light);
12963            border: 2px solid transparent;
12964        }
12965
12966        .artist-card:hover {
12967            transform: translateY(-10px) scale(1.02);
12968            box-shadow: var(--shadow-heavy);
12969            border-color: var(--accent-color);
12970        }
12971
12972        .artist-image-wrapper {
12973            position: relative;
12974            width: 100%;
12975            aspect-ratio: 1;
12976            overflow: hidden;
12977        }
12978
12979        .artist-image {
12980            width: 100%;
12981            height: 100%;
12982            object-fit: cover;
12983            transition: transform 0.5s ease;
12984        }
12985
12986        .artist-card:hover .artist-image {
12987            transform: scale(1.1);
12988        }
12989
12990        .artist-overlay {
12991            position: absolute;
12992            bottom: 0;
12993            left: 0;
12994            right: 0;
12995            background: linear-gradient(to top, rgba(0,0,0,0.9), transparent);
12996            padding: 2rem 1.5rem 1.5rem;
12997            color: white;
12998        }
12999
13000        .artist-stage-name {
13001            font-size: 1.5rem;
13002            font-weight: 700;
13003            margin-bottom: 0.3rem;
13004        }
13005
13006        .artist-role-badge {
13007            display: inline-block;
13008            background: var(--secondary-color);
13009            padding: 4px 12px;
13010            border-radius: 15px;
13011            font-size: 0.75rem;
13012            font-weight: 600;
13013            text-transform: uppercase;
13014            letter-spacing: 0.5px;
13015        }
13016
13017        .artist-real-name {
13018            font-size: 0.9rem;
13019            opacity: 0.8;
13020            margin-top: 0.5rem;
13021        }
13022
13023        /* Releases, Videos, News Grids */
13024        .releases-grid, .videos-grid, .news-grid {
13025            display: grid;
13026            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
13027            gap: 2rem;
13028            margin-top: 3rem;
13029        }
13030
13031        .release-card, .video-card, .news-card {
13032            background: white;
13033            border-radius: 20px;
13034            overflow: hidden;
13035            box-shadow: var(--shadow-light);
13036            transition: var(--transition);
13037            border: 2px solid transparent;
13038        }
13039
13040        .section-dark .release-card,
13041        .section-dark .video-card,
13042        .section-dark .news-card {
13043            background: rgba(255,255,255,0.05);
13044            border-color: rgba(255,255,255,0.1);
13045        }
13046
13047        .release-card:hover, .video-card:hover, .news-card:hover {
13048            transform: translateY(-10px);
13049            box-shadow: var(--shadow-heavy);
13050            border-color: var(--accent-color);
13051        }
13052
13053        .release-image, .video-embed, .news-image {
13054            position: relative;
13055            overflow: hidden;
13056            background: var(--gradient-main);
13057            display: flex;
13058            align-items: center;
13059            justify-content: center;
13060            color: white;
13061            font-size: 4rem;
13062        }
13063
13064        .release-image { 
13065            aspect-ratio: 1;
13066            position: relative;
13067        }
13068        
13069        .release-image img,
13070        .news-image img {
13071            width: 100%;
13072            height: 100%;
13073            object-fit: cover;
13074        }
13075
13076        .video-embed { 
13077            padding-bottom: 56.25%; 
13078            height: 0;
13079            position: relative;
13080        }
13081
13082        .video-embed iframe {
13083            position: absolute;
13084            top: 0;
13085            left: 0;
13086            width: 100%;
13087            height: 100%;
13088        }
13089
13090        .news-image { 
13091            height: 200px;
13092        }
13093
13094        .release-overlay {
13095            position: absolute;
13096            top: 0;
13097            left: 0;
13098            right: 0;
13099            bottom: 0;
13100            background: rgba(0,0,0,0.7);
13101            display: flex;
13102            align-items: center;
13103            justify-content: center;
13104            opacity: 0;
13105            transition: var(--transition);
13106        }
13107
13108        .release-card:hover .release-overlay {
13109            opacity: 1;
13110        }
13111
13112        .play-button {
13113            width: 60px;
13114            height: 60px;
13115            border-radius: 50%;
13116            background: var(--secondary-color);
13117            display: flex;
13118            align-items: center;
13119            justify-content: center;
13120            color: white;
13121            font-size: 1.5rem;
13122            transition: var(--transition);
13123            cursor: pointer;
13124        }
13125
13126        .play-button:hover {
13127            transform: scale(1.1);
13128            background: var(--accent-color);
13129            color: var(--primary-color);
13130        }
13131
13132        .release-info, .video-info, .news-content {
13133            padding: 1.5rem;
13134        }
13135
13136        .section-dark .release-info,
13137        .section-dark .video-info,
13138        .section-dark .news-content {
13139            color: var(--text-light);
13140        }
13141
13142        .release-title, .video-title, .news-title {
13143            font-size: 1.3rem;
13144            margin-bottom: 0.5rem;
13145            font-weight: 600;
13146            color: var(--text-dark);
13147        }
13148
13149        .section-dark .release-title,
13150        .section-dark .video-title,
13151        .section-dark .news-title {
13152            color: var(--text-light);
13153        }
13154
13155        .release-date, .news-date {
13156            color: #666;
13157            margin-bottom: 1rem;
13158            font-size: 0.9rem;
13159        }
13160
13161        .section-dark .release-date,
13162        .section-dark .news-date {
13163            color: rgba(255,255,255,0.7);
13164        }
13165
13166        .release-description, .news-excerpt {
13167            font-size: 0.95rem;
13168            color: #666;
13169            margin-bottom: 1rem;
13170            line-height: 1.6;
13171        }
13172
13173        .section-dark .release-description,
13174        .section-dark .news-excerpt {
13175            color: rgba(255,255,255,0.8);
13176        }
13177
13178        .streaming-links {
13179            display: flex;
13180            gap: 0.5rem;
13181            flex-wrap: wrap;
13182        }
13183
13184        .streaming-link {
13185            padding: 8px 15px;
13186            background: var(--primary-color);
13187            color: white;
13188            text-decoration: none;
13189            border-radius: 20px;
13190            font-size: 0.8rem;
13191            font-weight: 500;
13192            transition: var(--transition);
13193            display: inline-block;
13194        }
13195
13196        .streaming-link:hover {
13197            background: var(--secondary-color);
13198            transform: translateY(-2p
13198x);
13199        }
13200
13201        .video-type {
13202            display: inline-block;
13203            padding: 4px 12px;
13204            background: var(--jade-green);
13205            color: white;
13206            border-radius: 15px;
13207            font-size: 0.7rem;
13208            font-weight: 600;
13209            text-transform: uppercase;
13210            margin-bottom: 0.5rem;
13211        }
13212
13213        .video-link, .read-more {
13214            display: inline-block;
13215            margin-top: 1rem;
13216            color: var(--secondary-color);
13217            text-decoration: none;
13218            font-weight: 600;
13219            transition: var(--transition);
13220        }
13221
13222        .section-dark .video-link,
13223        .section-dark .read-more {
13224            color: var(--accent-color);
13225        }
13226
13227        .video-link:hover, .read-more:hover {
13228            color: var(--jade-green);
13229        }
13230
13231        .view-all-btn {
13232            text-align: center;
13233            margin-top: 3rem;
13234        }
13235
13236        .view-all-btn a {
13237            display: inline-block;
13238            padding: 15px 35px;
13239            background: var(--secondary-color);
13240            color: white;
13241            text-decoration: none;
13242            border-radius: 30px;
13243            font-weight: 600;
13244            transition: var(--transition);
13245        }
13246
13247        .view-all-btn a:hover {
13248            background: var(--jade-green);
13249            transform: translateY(-3px);
13250        }
13251
13252        .loading-message {
13253            grid-column: 1 / -1;
13254            text-align: center;
13255            padding: 3rem;
13256            font-size: 1.2rem;
13257            color: #999;
13258        }
13259
13260        .section-dark .loading-message {
13261            color: rgba(255,255,255,0.5);
13262        }
13263
13264        /* Bio Pages */
13265        .bio-page {
13266            display: none;
13267            min-height: 100vh;
13268            padding-top: 80px;
13269            background: var(--background-light);
13270        }
13271
13272        .bio-page.active {
13273            display: block;
13274        }
13275
13276        .bio-header {
13277            background: var(--gradient-main);
13278            padding: 3rem 0;
13279            color: white;
13280            text-align: center;
13281        }
13282
13283        .back-button {
13284            display: inline-block;
13285            padding: 10px 25px;
13286            background: rgba(255,255,255,0.2);
13287            color: white;
13288            text-decoration: none;
13289            border-radius: 25px;
13290            margin-bottom: 1rem;
13291            transition: var(--transition);
13292            font-weight: 500;
13293        }
13294
13295        .back-button:hover {
13296            background: rgba(255,255,255,0.3);
13297            transform: translateY(-2px);
13298        }
13299
13300        .bio-content {
13301            max-width: 1000px;
13302            margin: -50px auto 0;
13303            position: relative;
13304            z-index: 10;
13305            padding: 0 20px 60px;
13306        }
13307
13308        .bio-card {
13309            background: white;
13310            border-radius: 20px;
13311            overflow: hidden;
13312            box-shadow: var(--shadow-heavy);
13313        }
13314
13315        .bio-image-section {
13316            padding: 3rem;
13317            text-align: center;
13318            background: linear-gradient(135deg, #fff5e6 0%, #ffe4b5 100%);
13319        }
13320
13321        .bio-artist-image {
13322            width: 280px;
13323            height: 280px;
13324            border-radius: 50%;
13325            object-fit: cover;
13326            border: 6px solid white;
13327            box-shadow: var(--shadow-light);
13328        }
13329
13330        .bio-text-section {
13331            padding: 3rem;
13332        }
13333
13334        .bio-artist-title {
13335            text-align: center;
13336            margin-bottom: 2.5rem;
13337            padding-bottom: 2rem;
13338            border-bottom: 2px solid #f0f0f0;
13339        }
13340
13341        .bio-artist-title h1 {
13342            font-size: 2.8rem;
13343            margin-bottom: 0.8rem;
13344            font-family: 'Noto Serif SC', serif;
13345            color: var(--text-dark);
13346        }
13347
13348        .bio-artist-title .stage-name {
13349            font-size: 1.4rem;
13350            color: var(--secondary-color);
13351            font-weight: 600;
13352            margin-bottom: 1rem;
13353        }
13354
13355        .bio-artist-title .role {
13356            display: inline-block;
13357            background: var(--jade-green);
13358            color: white;
13359            padding: 10px 25px;
13360            border-radius: 25px;
13361            font-size: 1rem;
13362            font-weight: 600;
13363        }
13364
13365        .bio-description {
13366            line-height: 2;
13367            font-size: 1.1rem;
13368            color: var(--text-dark);
13369        }
13370
13371        .bio-description p {
13372            margin-bottom: 1.5rem;
13373            text-align: justify;
13374        }
13375
13376        /* Footer */
13377        .main-footer {
13378            background: var(--primary-color);
13379            color: var(--text-light);
13380            padding: 3rem 0 1rem;
13381            text-align: center;
13382        }
13383
13384        .social-links {
13385            display: flex;
13386            justify-content: center;
13387            gap: 1rem;
13388            margin-bottom: 2rem;
13389        }
13390
13391        .social-link {
13392            width: 50px;
13393            height: 50px;
13394            border-radius: 50%;
13395            background: var(--secondary-color);
13396            color: var(--text-light);
13397            display: flex;
13398            align-items: center;
13399            justify-content: center;
13400            text-decoration: none;
13401            font-size: 1.2rem;
13402            transition: var(--transition);
13403        }
13404
13405        .social-link:hover {
13406            background: var(--accent-color);
13407            color: var(--primary-color);
13408            transform: translateY(-3px);
13409        }
13410
13411        @media (max-width: 768px) {
13412            .mobile-menu-toggle { display: block; }
13413            .nav-container { padding-right: 170px; }
13414            .lang-toggle { padding: 5px; }
13415            .lang-toggle button { padding: 6px 10px; font-size: 0.75rem; }
13416            .nav-menu {
13417                position: fixed;
13418                top: 70px;
13419                left: 0;
13420                right: 0;
13421                background: var(--primary-color);
13422                flex-direction: column;
13423                padding: 2rem;
13424                transform: translateY(-100%);
13425                opacity: 0;
13426                visibility: hidden;
13427                transition: var(--transition);
13428            }
13429            .nav-menu.active {
13430                transform: translateY(0);
13431                opacity: 1;
13432                visibility: visible;
13433            }
13434            .artists-gallery {
13435                grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
13436                gap: 1.5rem;
13437            }
13438            .releases-grid, .videos-grid, .news-grid {
13439                grid-template-columns: 1fr;
13440            }
13441            .bio-artist-image {
13442                width: 200px;
13443                height: 200px;
13444            }
13445            .bio-artist-title h1 {
13446                font-size: 2rem;
13447            }
13448            .bio-text-section {
13449                padding: 2rem 1.5rem;
13450            }
13451        }
13452    
13453    .ev-nw-badge{position:fixed;bottom:72px;right:20px;z-index:9999;display:inline-flex;align-items:center;gap:5px;padding:8px 14px;background:rgba(2,2,8,.9);border:1px solid rgba(255,255,255,.14);border-radius:100px;font-size:.68rem;font-weight:600;color:rgba(255,255,255,.55);text-decoration:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);letter-spacing:.06em;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}
13454.ev-nw-badge:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(2,2,8,.97)}
13455.ev-nw-badge-mark{width:14px;
13455height:14px;display:grid;grid-template-columns:1fr 1fr;gap:2px;flex-shrink:0}
13456.ev-nw-badge-mark span{background:currentColor;border-radius:2px;display:block}
13457  </style>
13458
13459<a href="https://echovira.com" class="ev-nw-badge" target="_blank" rel="noopener" title="EchoVira Music Network">
13460  <div class="ev-nw-badge-mark"><span></span><span></span><span></span><span></span></div>
13461  EchoVira
13462</a>
13463
13464<nav class="main-nav" id="mainNav">
13465    <div class="nav-container">
13466        <a href="#home" class="logo">
13467            <img src="https://media.echovira.com/echovira/luoxi_logo.png" alt="Luoxi 落曦"
13468                srcset="https://media.echovira.com/echovira/luoxi_logo-400.webp 400w, https://media.echovira.com/echovira/luoxi_logo-800.webp 800w, https://media.echovira.com/echovira/luoxi_logo-full.webp 1024w"
13469                sizes="50px" width="1024" height="1024" decoding="async">
13470        </a>
13471        <ul class="nav-menu" id="navMenu">
13472            <li class="lang-zh"><a href="#home">首页</a></li>
13473            <li class="lang-zh"><a href="#about">关于</a></li>
13474            <li class="lang-zh"><a href="#artists">艺人</a></li>
13475            <li class="lang-en"><a href="#home">Home</a></li>
13476            <li class="lang-en"><a href="#about">About</a></li>
13477            <li class="lang-en"><a href="#artists">Artists</a></li>
13478        </ul>
13479        <button class="mobile-menu-toggle" id="mobileToggle">☰</button>
13480    </div>
13481<div class="lang-toggle">
13482        <button onclick="window.setLanguage&&setLanguage('zh')" class="lang-btn-zh active" data-lang="zh">中文</button>
13483        <button onclick="window.setLanguage&&setLanguage('en')" class="lang-btn-en" data-lang="en">English</button>
13484    </div>
13485</nav>
13486
13487<span id="main-content" tabindex="-1"></span>
13488
13489<section class="hero-section" id="home">
13490    
13491    
13492    <div class="hero-content">
13493        <h1 class="hero-title">落曦 Luoxi</h1>
13494        <p class="hero-subtitle lang-zh">中国独立摇滚乐队 | 华语原创音乐 | 现代民谣与氛围融合 | 后摇实验音乐 | 文学性歌词创作 | 12人音乐团体 | 国际品质制作</p>
13495        <p class="hero-subtitle lang-en">Chinese Indie Rock Band | Original Mandopop Music | Folk & Atmospheric Fusion | Post-Rock Experimental | Literary Lyrics | 12-Member Ensemble | International Quality</p>
13496        <a href="#about" class="cta-button lang-zh">探索我们的音乐</a>
13497        <a href="#about" class="cta-button lang-en">Discover Our Music</a>
13498    </div>
13499</section>
13500
13501<section class="section" id="about">
13502    <div class="container">
13503        <h2 class="section-title lang-zh">关于落曦</h2>
13504        <h2 class="section-title lang-en">About Luoxi</h2>
13505        <div class="about-content">
13506            <p class="lang-zh">
13507                <strong>落曦(Luoxi)</strong> —— 不仅是一支中国独立乐队,更是中国<strong>独立音乐</strong>、<strong>另类摇滚</strong>和<strong>实验音乐</strong>新浪潮的杰出代表和创新先锋。我们将<strong>传统中国音乐元素</strong>、<strong>古典民族乐器</strong>与现代<strong>独立摇滚</strong>、<strong>氛围后摇</strong>、<strong>民谣诗歌</strong>、<strong>电子实验音乐</strong>和<strong>前卫艺术摇滚</strong>完美融合,创造出跨越文化边界、触动心灵深处的独特音乐语言和声音美学。
13508            </p>
13509            <p class="lang-zh">
13510                由12位才华横溢、技艺精湛的音乐人组成 —— 包括<strong>灵魂深情的男女主唱</strong>、<strong>多才多艺的乐器演奏家</strong>、<strong>创作型词曲作者</strong>、<strong>音乐制作人</strong>和<strong>编曲大师</strong> —— 落曦代表着当代<strong>华语音乐</strong>、<strong>华语流行</strong>、<strong>中文原创音乐</strong>的多样性、创造力和艺术追求。我们从<strong>中国传统民乐</strong>、<strong>古典诗词文化</strong>、<strong>80年代中国摇滚</strong>、<strong>现代独立音乐运动</strong>和<strong>后摇实验音乐</strong>中汲取深刻灵感。
13511            </p>
13512            <p class="lang-zh">
13513                从中国各大城市(北京、上海、广州、深圳、成都)的<strong>现场演出</strong>、<strong>音乐节表演</strong>到在Spotify、Apple Music、YouTube Music、QQ音乐、网易云音乐等平台发布<strong>数字专辑</strong>、<strong>单曲</strong>和<strong>EP</strong>,落曦正在构建一个具有持久价值的音乐传承和è‰
13513ºæœ¯é—产。落曦意味着日落时分的余晖 —— 温暖人心、意境深邃、充满希望。
13514            </p>
13515            
13516            <p class="lang-en">
13517                <strong>Luoxi (落曦)</strong> — more than just a Chinese indie band, Luoxi stands as an outstanding representative and innovative pioneer of China's <strong>independent music</strong>, <strong>alternative rock</strong>, and <strong>experimental music</strong> new wave movement. We masterfully blend <strong>traditional Chinese musical elements</strong> with modern <strong>indie rock</strong>, <strong>atmospheric post-rock</strong>, <strong>folk poetry</strong>, <strong>electronic experimental music</strong>, and <strong>progressive art rock</strong>.
13518            </p>
13519            <p class="lang-en">
13520                Formed by 12 exceptionally talented musicians — including <strong>soulful male and female lead singers</strong>, <strong>versatile multi-instrumentalists</strong>, <strong>singer-songwriters</strong>, <strong>music producers</strong>, and <strong>arrangement masters</strong> — Luoxi represents the diversity and creativity of contemporary <strong>Chinese music</strong>, <strong>Mandopop</strong>, and <strong>C-pop</strong>. We draw inspiration from <strong>traditional Chinese folk music</strong>, <strong>classical poetry culture</strong>, <strong>1980s Chinese rock</strong>, and <strong>modern indie music movements</strong>.
13521            </p>
13522            <p class="lang-en">
13523                From <strong>live performances</strong> and <strong>music festivals</strong> in major Chinese cities (Beijing, Shanghai, Guangzhou, Shenzhen, Chengdu) to releasing on Spotify, Apple Music, YouTube Music, QQ Music, and NetEase Cloud Music, Luoxi is building an enduring musical legacy. Luoxi means the afterglow at sunset — heartwarming, artistically profound, filled with hope.
13524            </p>
13525        </div>
13526    </div>
13527</section>
13528
13529<section class="section section-dark" id="artists">
13530    <div class="container">
13531        <h2 class="section-title lang-zh">艺人阵容</h2>
13532        <h2 class="section-title lang-en">The Artists</h2>
13533        <div class="artists-gallery" id="artistsGallery">
13534<div class="artist-card" data-artist-id="bo-feng" style="cursor:pointer">
13535            <div class="artist-image-wrapper">
13536                <img src="https://media.echovira.com/luoxi/luoxi_bo_feng_multi_instrumentalist_portrait_0.png" alt="Bo Feng" class="artist-image"
13537                srcset="https://media.echovira.com/luoxi/luoxi_bo_feng_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_bo_feng_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_bo_feng_multi_instrumentalist_portrait_0-full.webp 1024w"
13538                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
13539                <div class="artist-overlay">
13540                    <div class="artist-stage-name">Bo</div>
13541                    <div class="artist-role-badge lang-zh">多才乐器演奏家</div>
13542                    <div class="artist-role-badge lang-en">Multi-Instrumentalist</div>
13543                    <div class="artist-real-name lang-zh">冯波 • 26岁</div>
13544                    <div class="artist-real-name lang-en">Bo Feng • Age 26</div>
13545                </div>
13546            </div>
13547        </div><div class="artist-card" data-artist-id="chen-wang" style="cursor:pointer">
13548            <div class="artist-image-wrapper">
13549                <img src="https://media.echovira.com/luoxi/luoxi_chen_wang_male_singer_portrait_0.png" alt="Chen Wang" class="artist-image"
13550                srcset="https://media.echovira.com/luoxi/luoxi_chen_wang_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_chen_wang_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_chen_wang_male_singer_portrait_0-full.webp 1024w"
13551                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
13552                <div class="artist-overlay">
13553                    <div class="artist-stage-name">Chen</div>
13554                    <div class="artist-role-badge lang-zh">男歌手</div>
13555                    <div class="artist-role-badge lang-en">Male Singer</div>
13556                    <div class="artist-real-name lang-zh">陈王 • 27岁</div>
13557                    <div class="artist-real-name lang-en">Chen Wang • Age 27</div>
13558                </div>
13559            </div>
13560        </div><div class="artist-card" data-artist-id="hao-li" style="cursor:pointer">
13561            <div class="artist-image-wrapper">
13562                <img src="https://media.echovira.com/luoxi/luoxi_hao_li_male_singer_portrait_1.png" alt="Hao Li" class="artist-image"
13563                srcset="https://media.echovira.com/luoxi/luoxi_hao_li_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/luoxi/luoxi_hao_li_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/luoxi/luoxi_hao_li_male_singer_portrait_1-full.
13563webp 1024w"
13564                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
13565                <div class="artist-overlay">
13566                    <div class="artist-stage-name">Hao</div>
13567                    <div class="artist-role-badge lang-zh">男歌手</div>
13568                    <div class="artist-role-badge lang-en">Male Singer</div>
13569                    <div class="artist-real-name lang-zh">李浩 • 25岁</div>
13570                    <div class="artist-real-name lang-en">Hao Li • Age 25</div>
13571                </div>
13572            </div>
13573        </div><div class="artist-card" data-artist-id="hui-lin" style="cursor:pointer">
13574            <div class="artist-image-wrapper">
13575                <img src="https://media.echovira.com/luoxi/luoxi_hui_lin_female_singer_portrait_0.png" alt="Hui Lin" class="artist-image"
13576                srcset="https://media.echovira.com/luoxi/luoxi_hui_lin_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_hui_lin_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_hui_lin_female_singer_portrait_0-full.webp 1024w"
13577                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
13578                <div class="artist-overlay">
13579                    <div class="artist-stage-name">Hui</div>
13580                    <div class="artist-role-badge lang-zh">女歌手</div>
13581                    <div class="artist-role-badge lang-en">Female Singer</div>
13582                    <div class="artist-real-name lang-zh">林惠 • 27岁</div>
13583                    <div class="artist-real-name lang-en">Hui Lin • Age 27</div>
13584                </div>
13585            </div>
13586        </div><div class="artist-card" data-artist-id="jun-zhao" style="cursor:pointer">
13587            <div class="artist-image-wrapper">
13588                <img src="https://media.echovira.com/luoxi/luoxi_jun_zhao_male_singer_portrait_0.png" alt="Jun Zhao" class="artist-image"
13589                srcset="https://media.echovira.com/luoxi/luoxi_jun_zhao_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_jun_zhao_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_jun_zhao_male_singer_portrait_0-full.webp 1024w"
13590                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
13591                <div class="artist-overlay">
13592                    <div class="artist-stage-name">Jun</div>
13593                    <div class="artist-role-badge lang-zh">男歌手</div>
13594                    <div class="artist-role-badge lang-en">Male Singer</div>
13595                    <div class="artist-real-name lang-zh">赵俊 • 24岁</div>
13596                    <div class="artist-real-name lang-en">Jun Zhao • Age 24</div>
13597                </div>
13598            </div>
13599        </div><div class="artist-card" data-artist-id="lan-xu" style="cursor:pointer">
13600            <div class="artist-image-wrapper">
13601                <img src="https://media.echovira.com/luoxi/luoxi_lan_xu_composer_lyricist_portrait_0.png" alt="Lan Xu" class="artist-image"
13602                srcset="https://media.echovira.com/luoxi/luoxi_lan_xu_composer_lyricist_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_lan_xu_composer_lyricist_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_lan_xu_composer_lyricist_portrait_0-full.webp 1024w"
13603                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
13604                <div class="artist-overlay">
13605                    <div class="artist-stage-name">Lan</div>
13606                    <div class="artist-role-badge lang-zh">作曲家和作词人</div>
13607                    <div class="artist-role-badge lang-en">Composer & Lyricist</div>
13608                    <div class="artist-real-name lang-zh">徐岚 • 28岁</div>
13609                    <div class="artist-real-name lang-en">Lan Xu • Age 28</div>
13610                </div>
13611            </div>
13612        </div><div class="artist-card" data-artist-id="ling-zhou" style="cursor:pointer">
13613            <div class="artist-image-wrapper">
13614                <img src="https://media.echovira.com/luoxi/luoxi_ling_zhou_female_singer_portrait_1.png" alt="Ling Zhou" class="artist-image"
13615                srcset="https://media.echovira.com/luoxi/luoxi_ling_zhou_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/luoxi/luoxi_ling_zhou_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/luoxi/luoxi_ling_zhou_female_singer_portrait_1-full.
13615webp 1024w"
13616                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
13617                <div class="artist-overlay">
13618                    <div class="artist-stage-name">Ling</div>
13619                    <div class="artist-role-badge lang-zh">女歌手</div>
13620                    <div class="artist-role-badge lang-en">Female Singer</div>
13621                    <div class="artist-real-name lang-zh">周凌 • 24岁</div>
13622                    <div class="artist-real-name lang-en">Ling Zhou • Age 24</div>
13623                </div>
13624            </div>
13625        </div><div class="artist-card" data-artist-id="mei-chen" style="cursor:pointer">
13626            <div class="artist-image-wrapper">
13627                <img src="https://media.echovira.com/luoxi/luoxi_mei_chen_female_singer_portrait_0.png" alt="Mei Chen" class="artist-image"
13628                srcset="https://media.echovira.com/luoxi/luoxi_mei_chen_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_mei_chen_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_mei_chen_female_singer_portrait_0-full.webp 1024w"
13629                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
13630                <div class="artist-overlay">
13631                    <div class="artist-stage-name">Mei</div>
13632                    <div class="artist-role-badge lang-zh">女歌手</div>
13633                    <div class="artist-role-badge lang-en">Female Singer</div>
13634                    <div class="artist-real-name lang-zh">陈美 • 25岁</div>
13635                    <div class="artist-real-name lang-en">Mei Chen • Age 25</div>
13636                </div>
13637            </div>
13638        </div><div class="artist-card" data-artist-id="tao-yang" style="cursor:pointer">
13639            <div class="artist-image-wrapper">
13640                <img src="https://media.echovira.com/luoxi/luoxi_tao_yang_male_singer_portrait_2.png" alt="Tao Yang" class="artist-image"
13641                srcset="https://media.echovira.com/luoxi/luoxi_tao_yang_male_singer_portrait_2-400.webp 400w, https://media.echovira.com/luoxi/luoxi_tao_yang_male_singer_portrait_2-800.webp 800w, https://media.echovira.com/luoxi/luoxi_tao_yang_male_singer_portrait_2-full.webp 1024w"
13642                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
13643                <div class="artist-overlay">
13644                    <div class="artist-stage-name">Tao</div>
13645                    <div class="artist-role-badge lang-zh">男歌手</div>
13646                    <div class="artist-role-badge lang-en">Male Singer</div>
13647                    <div class="artist-real-name lang-zh">杨涛 • 28岁</div>
13648                    <div class="artist-real-name lang-en">Tao Yang • Age 28</div>
13649                </div>
13650            </div>
13651        </div><div class="artist-card" data-artist-id="wei-zhang" style="cursor:pointer">
13652            <div class="artist-image-wrapper">
13653                <img src="https://media.echovira.com/luoxi/luoxi_wei_zhang_male_singer_portrait_0.png" alt="Wei Zhang" class="artist-image"
13654                srcset="https://media.echovira.com/luoxi/luoxi_wei_zhang_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_wei_zhang_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_wei_zhang_male_singer_portrait_0-full.webp 1024w"
13655                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
13656                <div class="artist-overlay">
13657                    <div class="artist-stage-name">Wei</div>
13658                    <div class="artist-role-badge lang-zh">男歌手</div>
13659                    <div class="artist-role-badge lang-en">Male Singer</div>
13660                    <div class="artist-real-name lang-zh">张伟 • 26岁</div>
13661                    <div class="artist-real-name lang-en">Wei Zhang • Age 26</div>
13662                </div>
13663            </div>
13664        </div><div class="artist-card" data-artist-id="xia-wu" style="cursor:pointer">
13665            <div class="artist-image-wrapper">
13666                <img src="https://media.echovira.com/luoxi/luoxi_xia_wu_female_singer_portrait_0.png" alt="Xia Wu" class="artist-image"
13667                srcset="https://media.echovira.com/luoxi/luoxi_xia_wu_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_xia_wu_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_xia_wu_female_singer_portrait_0-full.
13667webp 1024w"
13668                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
13669                <div class="artist-overlay">
13670                    <div class="artist-stage-name">Xia</div>
13671                    <div class="artist-role-badge lang-zh">女歌手</div>
13672                    <div class="artist-role-badge lang-en">Female Singer</div>
13673                    <div class="artist-real-name lang-zh">吴夏 • 26岁</div>
13674                    <div class="artist-real-name lang-en">Xia Wu • Age 26</div>
13675                </div>
13676            </div>
13677        </div><div class="artist-card" data-artist-id="ying-sun" style="cursor:pointer">
13678            <div class="artist-image-wrapper">
13679                <img src="https://media.echovira.com/luoxi/luoxi_ying_sun_female_singer_portrait_0.png" alt="Ying Sun" class="artist-image"
13680                srcset="https://media.echovira.com/luoxi/luoxi_ying_sun_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_ying_sun_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_ying_sun_female_singer_portrait_0-full.webp 1024w"
13681                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
13682                <div class="artist-overlay">
13683                    <div class="artist-stage-name">Ying</div>
13684                    <div class="artist-role-badge lang-zh">女歌手</div>
13685                    <div class="artist-role-badge lang-en">Female Singer</div>
13686                    <div class="artist-real-name lang-zh">孙颖 • 23岁</div>
13687                    <div class="artist-real-name lang-en">Ying Sun • Age 23</div>
13688                </div>
13689            </div>
13690        </div>
13691</div>
13692    </div>
13693</section>
13694
13695
13696
13697
13698<footer class="main-footer">
13699    <div class="container">
13700        <div class="social-links">
13701            <a href="https://www.youtube.com/@LuoxiOfficial" target="_blank" class="social-link">📺</a>
13702            <a href="https://www.instagram.com/luoxiofficial/" target="_blank" class="social-link">📷</a>
13703            <a href="https://www.tiktok.com/@luoxiofficial" target="_blank" class="social-link">🎵</a>
13704            <a href="https://www.facebook.com/luoxiofficial" target="_blank" class="social-link">👥</a>
13705        </div>
13706        <p class="lang-zh">&copy; 2025 落曦 Luoxi. 版权所有.</p>
13707        <p class="lang-en">&copy; 2025 Luoxi. All rights reserved.</p>
13708    </div>
13709</footer>
13710
13711
13712
13713
13714<div id="bioPages">
13715<div id="bio-bo-feng" class="bio-page">
13716            <div class="bio-header">
13717                <div class="container">
13718                    <a href="#artists" data-action="back" class="back-button lang-zh">← 返回艺人阵容</a>
13719                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
13720                </div>
13721            </div>
13722            
13723            <div class="bio-content">
13724                <div class="bio-card">
13725                    <div class="bio-image-section">
13726                        <img src="https://media.echovira.com/luoxi/luoxi_bo_feng_multi_instrumentalist_portrait_0.png" alt="Bo Feng" class="bio-artist-image"
13727                srcset="https://media.echovira.com/luoxi/luoxi_bo_feng_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_bo_feng_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_bo_feng_multi_instrumentalist_portrait_0-full.webp 1024w"
13728                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
13729                    </div>
13730                    <div class="bio-text-section">
13731                        <div class="bio-artist-title">
13732                            <h1 class="lang-zh">冯波</h1>
13733                            <h1 class="lang-en">Bo Feng</h1>
13734                            <div class="stage-name">"Bo" • 26岁 / Age 26</div>
13735                            <div class="role lang-zh">多才乐器演奏家</div>
13736                            <div class="role lang-en">Multi-Instrumentalist</div>
13737                        </div>
13738                        <div class="bio-description lang-zh">
13739                            <p>认识冯波(艺名Bo),26岁,落曦乐队的多才多艺乐器演奏家,用魔法般的双手塑造乐队独特的氛围音乐风格。作为吉他、钢琴和节奏织体的大师,Bo将精湛的技巧转化为感人至深的音乐时刻,提升每首歌曲的表现力和感染力。他的演奏既精准又富有情感,编织出成为落曦音乐灵魂支柱的旋律和律动。</p><p>无畏的乐器演奏家,拥有大胆而原始的音乐性,Bo在不同乐器之间游刃有余,凭借精准的技巧和专注的音色锁定律动并提升副歌部分。他的编曲直觉和旋律选择创造出反复出现的主题动机,赋予落曦标志性的音乐弧线和现场动力。在舞台上,这转化为紧凑的律动口袋、意想不到的填充和紧迫的动态变化,深深吸引观众。</p><p>
13739作为作曲家和编曲者,Bo构建清晰的主题动机和深思熟虑的过渡;作为具有制作人听觉的演奏者,他用层次和空间思考。你将在我们即将发布的作品中听到Bo的音乐指纹——期待层叠的编曲、大胆的Hook和在录音室中捕捉的现场能量。Bo的多面才华使他成为落曦音乐创作的核心力量,他不仅演奏乐器,更是音乐氛围和情感表达的重要塑造者。</p>
13740                        </div>
13741                        <div class="bio-description lang-en">
13742                            <p>Meet Bo (Bo Feng), 26 — Luoxi's multi-instrumentalist, reshaping every song live and in the studio. A fearless instrumentalist with bold, raw musicality.</p><p>Bo moves between instruments with precise technique and a focused tone that locks the groove and lifts choruses. Their arranging instincts and melodic choices create the recurring motifs that give Luoxi its signature arcs and live momentum. On stage, that translates to tight pockets, unexpected fills, and urgent dynamics that pull the audience in.</p><p>As a composer-arranger, Bo builds clear motifs and thoughtful transitions; as a player with a producer's ear, they think in layers and space. Explore Luoxi's latest tracks and live videos to hear how those choices land. Bo's multifaceted talents make them a core creative force in Luoxi's music-making, not just playing instruments but shaping the musical atmosphere and emotional expression.</p>
13743                        </div>
13744                    </div>
13745                </div>
13746            </div>
13747        </div>
13748<div id="bio-chen-wang" class="bio-page">
13749            <div class="bio-header">
13750                <div class="container">
13751                    <a href="#artists" data-action="back" class="back-button lang-zh">← 返回艺人阵容</a>
13752                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
13753                </div>
13754            </div>
13755            
13756            <div class="bio-content">
13757                <div class="bio-card">
13758                    <div class="bio-image-section">
13759                        <img src="https://media.echovira.com/luoxi/luoxi_chen_wang_male_singer_portrait_0.png" alt="Chen Wang" class="bio-artist-image"
13760                srcset="https://media.echovira.com/luoxi/luoxi_chen_wang_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_chen_wang_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_chen_wang_male_singer_portrait_0-full.webp 1024w"
13761                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
13762                    </div>
13763                    <div class="bio-text-section">
13764                        <div class="bio-artist-title">
13765                            <h1 class="lang-zh">陈王</h1>
13766                            <h1 class="lang-en">Chen Wang</h1>
13767                            <div class="stage-name">"Chen" • 27岁 / Age 27</div>
13768                            <div class="role lang-zh">男歌手</div>
13769                            <div class="role lang-en">Male Singer</div>
13770                        </div>
13771                        <div class="bio-description lang-zh">
13772                            <p>认识陈王(舞台名:Chen),27岁,落曦乐团主唱,灵魂般的沙哑嗓音与澎湃能量,带来深情又充满力量的演唱。他声线兼具厚度与穿透力,音域宽广、情感层次丰富,是乐团将民谣、摇滚与氛围感融合的关键声音。</p><p>作为落曦的前台主唱,Chen的男中音音色在精确的乐句塑造、动态控制和气息驱动的细微差别中移动,深受布鲁斯、独立摇滚和现代R&B的影响。他的声音色彩定义了乐队的音色调色板,驱动现场表演从氛围感十足到紧迫有力,操控动态并引导观众反应。</p><p>每次现场他都以爆发力与细腻细节把歌曲的故事推动到新高度,让乐迷为之动容。在录音室中,Chen帮助塑造人声编排和织体选择,保持录音既直接又有层次。关注落曦,预保存即将发布的新曲并在评论告诉我们你最期待的哪首歌,和我们一起见证Chen的音乐之旅!</p>
13773                        </div>
13774                        <div class="bio-description lang-en">
13775                            <p>Meet Chen (Chen Wang), 27 — the male singer of Luoxi. A soulful powerhouse whose voice carries a gritty, emotional edge. His baritone timbre moves across a wide range with precise phrasing, controlled dynamics, and a stage presence that makes every line feel lived-in.</p><p>Influenced by blues, indie rock, and modern R&B, Chen leans on raw inflection and breath-driven nuance to shape each vocal moment. As Luoxi's frontman, his vocal colors define the band's sonic palette and drive live energy from atmospheric to urgent, steering dynamics and crowd response.</p><p>Live, he elevates every song with both raw power and intimate phrasing, making performances unforgettable. In the studio he helps shape vocal arrangements and texture choices that keep re
13775cordings immediate yet layered. Follow Luoxi, pre-save the upcoming release and tell us in the comments which track you're most excited for — join the journey and support Chen's next chapter!</p>
13776                        </div>
13777                    </div>
13778                </div>
13779            </div>
13780        </div>
13781<div id="bio-hao-li" class="bio-page">
13782            <div class="bio-header">
13783                <div class="container">
13784                    <a href="#artists" data-action="back" class="back-button lang-zh">← 返回艺人阵容</a>
13785                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
13786                </div>
13787            </div>
13788            
13789            <div class="bio-content">
13790                <div class="bio-card">
13791                    <div class="bio-image-section">
13792                        <img src="https://media.echovira.com/luoxi/luoxi_hao_li_male_singer_portrait_1.png" alt="Hao Li" class="bio-artist-image"
13793                srcset="https://media.echovira.com/luoxi/luoxi_hao_li_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/luoxi/luoxi_hao_li_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/luoxi/luoxi_hao_li_male_singer_portrait_1-full.webp 1024w"
13794                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
13795                    </div>
13796                    <div class="bio-text-section">
13797                        <div class="bio-artist-title">
13798                            <h1 class="lang-zh">李浩</h1>
13799                            <h1 class="lang-en">Hao Li</h1>
13800                            <div class="stage-name">"Hao" • 25岁 / Age 25</div>
13801                            <div class="role lang-zh">男歌手</div>
13802                            <div class="role lang-en">Male Singer</div>
13803                        </div>
13804                        <div class="bio-description lang-zh">
13805                            <p>认识李浩(舞台名:Hao),25岁,落曦乐队充满活力且受观众喜爱的主唱,他明亮、略带沙砾的音色和广阔的音域让他能够轻松地从私密的主歌移动到高亢的副歌。Hao的乐句处理和动态控制为旋律带来清晰度,而自信的舞台表现将歌曲转化为共享时刻。</p><p>受独立流行和现代摇滚的影响,他的声音选择塑造了落曦的编曲并推动乐队的现场动力。在演出之夜,Hao在乐句处理和节奏控制上的提示将乐队拉入更紧密、更有冲击力的时刻,让听众实时感受。</p><p>探索最新曲目和现场片段——它们展示了他的声音如何锚定录音室曲目和演出。Hao是落曦阳光、向上、充满希望的情感核心,他的高能副歌、动人的旋律演绎和充满激情的现场表演录音将在即将发布的单曲和专辑中展现。告诉我们你最喜欢的时刻并关注以获取新发布。</p>
13806                        </div>
13807                        <div class="bio-description lang-en">
13808                            <p>Meet Hao Li — "Hao", 25, lead male singer of Luoxi. Energetic and upbeat, he's a crowd-pleasing vocalist who brings strong hooks and immediate stage connection.</p><p>Hao's bright, slightly gritty timbre and wide range let him move from intimate verses to soaring choruses with ease. His phrasing and dynamic control give clarity to melodies, while a confident stage presence turns songs into communal moments. Influenced by indie-pop and modern rock, his vocal choices shape Luoxi's arrangements and push the band's live momentum.</p><p>Hear Hao on Luoxi's latest singles and live clips — they show how his voice anch
13808ors both studio tracks and shows. Tell us your favorite moment and welcome Hao in the comments. Follow for new drops and tour updates.</p>
13809                        </div>
13810                    </div>
13811                </div>
13812            </div>
13813        </div>
13814<div id="bio-hui-lin" class="bio-page">
13815            <div class="bio-header">
13816                <div class="container">
13817                    <a href="#artists" data-action="back" class="back-button lang-zh">← 返回艺人阵容</a>
13818                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
13819                </div>
13820            </div>
13821            
13822            <div class="bio-content">
13823                <div class="bio-card">
13824                    <div class="bio-image-section">
13825                        <img src="https://media.echovira.com/luoxi/luoxi_hui_lin_female_singer_portrait_0.png" alt="Hui Lin" class="bio-artist-image"
13826                srcset="https://media.echovira.com/luoxi/luoxi_hui_lin_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_hui_lin_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_hui_lin_female_singer_portrait_0-full.webp 1024w"
13827                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
13828                    </div>
13829                    <div class="bio-text-section">
13830                        <div class="bio-artist-title">
13831                            <h1 class="lang-zh">林惠</h1>
13832                            <h1 class="lang-en">Hui Lin</h1>
13833                            <div class="stage-name">"Hui" • 27岁 / Age 27</div>
13834                            <div class="role lang-zh">女歌手</div>
13835                            <div class="role lang-en">Female Singer</div>
13836                        </div>
13837                        <div class="bio-description lang-zh">
13838                            <p>落曦带来新声音——请欢迎主唱惠林(舞台名:Hui),27岁女歌手。她以深情与端雅并存的演绎,为乐队注入独特温度与力量。她的艺术风格在于将灵魂般的深情与历久弥新的呈现结合,使每句旋律都富有质感。</p><p>作为主唱,她的嗓质温暖且层次分明,音域宽广,唱句处理细腻,动态掌控与舞台亲和力中能听出爵士与民谣的影响。Hui的声音定义了落曦的现场能量与曲风走向,将安静段落转化为亲密时刻,将副歌转化为驱动力量。</p><p>她的声音决策也影响编曲,促使乐队在她的演唱线条周围呼吸,并构建清晰有力的渐强段落。Hui不仅是出色的演唱者,还是落曦音乐情感表达和艺术气质的重要塑造者。快来听她们的最新单曲并告诉我们你最喜欢的瞬间,关注以获取更多新作。</p>
13839                        </div>
13840                        <div class="bio-description lang-en">
13841                            <p>Meet Hui (Hui Lin), 27 — the female singer of Luoxi, bringing a focused new voice to the band. Her artistry blends soulful warmth with a poised, timeless delivery that makes each melody linger.</p><p>As lead vocalist she offers a warm, layered timbre, wide range, precise phrasing and dynamic control, drawing from jazz and folk traditions while owning the stage. Hui's voice shapes Luoxi's sonic identity and live energy, turning quiet passages into intimate moments and choruses into a driving force.</p><p>Her vocal decisions also influence arrangement directions, prompting the band to create breathing space around her lines and build clear, powerful crescendo sections. Listen to their latest release, tell us your favorite moment, and follow for new drops.</p>
13842                        </div>
13843                    </div>
13844                </div>
13845            </div>
13846        </div>
13847<div id="bio-jun-zhao" class="bio-page">
13848            <div class="bio-header">
13849                <div class="container">
13850                    <a href="#artists" data-action="back" class="back-button lang-zh">← 返回艺人阵容</a>
13851                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
13852                </div>
13853            </div>
13854            
13855            <div class="bio-content">
13856                <div class="bio-card">
13857                    <div class="bio-image-section">
13858                        <img src="https://media.echovira.com/luoxi/luoxi_jun_zhao_male_singer_portrait_0.png" alt="Jun Zhao" class="bio-artist-image"
13859                srcset="https://media.echovira.com/luoxi/luoxi_jun_zhao_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_jun_zhao_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_jun_zhao_male_singer_portrait_0-full.
13859webp 1024w"
13860                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
13861                    </div>
13862                    <div class="bio-text-section">
13863                        <div class="bio-artist-title">
13864                            <h1 class="lang-zh">赵俊</h1>
13865                            <h1 class="lang-en">Jun Zhao</h1>
13866                            <div class="stage-name">"Jun" • 24岁 / Age 24</div>
13867                            <div class="role lang-zh">男歌手</div>
13868                            <div class="role lang-en">Male Singer</div>
13869                        </div>
13870                        <div class="bio-description lang-zh">
13871                            <p>认识一下落曦的主唱赵俊(舞台名 Jun),24岁,拥有邻家男孩的声线、明亮又有穿透力的嗓音,现场充满能量,是大家的放电小太阳。他能把温柔与爆发完美衔接,抒情段落温暖动人,高音段又振奋人心,为落曦的音乐注入独特情感与层次。</p><p>作为乐队的主唱,他温暖的男高音音色、灵活的音域、精准的乐句处理和动态控制赋予落曦标志性的旋律特征和情感高点。他倾向于私密的乐句处理,带有R&B风格的转音和流行音乐的清晰度,使主歌感觉个人化,副歌高亢飞扬。</p><p>在舞台上,Jun清晰的演唱传递和俏皮的观众互动将安静时刻转化为大合唱,收紧乐队的现场律动,同时提升能量和连接。在录音室中,他帮助塑造人声编排和织体选择,使录音保持直接性的同时又富有层次。新歌即将发布,快来关注、留言告诉我们你最期待哪一首,和Jun一起在音乐里找到共鸣吧!</p>
13872                        </div>
13873                        <div class="bio-description lang-en">
13874                            <p>Meet Jun (Jun Zhao), the 24-year-old frontman of Luoxi — a boy-next-door voice with bright, penetrating tones and an upbeat, crowd-favorite energy. His vocals glide from intimate, heartfelt moments to soaring peaks, adding emotional depth that shapes Luoxi's signature sound and stage presence.</p><p>As the band's lead vocalist, his warm tenor timbre, flexible range, precise phrasing and dynamic control give Luoxi its melodic signature and emotional highs. He leans on intimate phrasing with R&B-tinged runs and pop clarity, so verses feel personal and choruses soar.</p><p>On stage Jun's clear delivery and playful crowd interaction turn quiet moments into singalongs and tighten the band's live groove, raising both energy and connection. In the studio he helps shape vocal arrangements and texture choices that keep recordings immediate yet layered. New music is coming — follow, stream, and tell us which track you can't wait to hear; join Jun and the band on this musical ride!</p>
13875                        </div>
13876                    </div>
13877                </div>
13878            </div>
13879        </div>
13880<div id="bio-lan-xu" class="bio-page">
13881            <div class="bio-header">
13882                <div class="container">
13883                    <a href="#artists" data-action="back" class="back-button lang-zh">← 返回艺人阵容</a>
13884                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
13885                </div>
13886            </div>
13887            
13888            <div class="bio-content">
13889                <div class="bio-card">
13890                    <div class="bio-image-section">
13891                        <img src="https://media.echovira.com/luoxi/luoxi_lan_xu_composer_lyricist_portrait_0.png" alt="Lan Xu" class="bio-artist-image"
13892                srcset="https://media.echovira.com/luoxi/luoxi_lan_xu_composer_lyricist_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_lan_xu_composer_lyricist_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_lan_xu_composer_lyricist_portrait_0-full.webp 1024w"
13893                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
13894                    </div>
13895                    <div class="bio-text-section">
13896                        <div class="bio-artist-title">
13897                            <h1 class="lang-zh">徐岚</h1>
13898                            <h1 class="lang-en">Lan Xu</h1>
13899                            <div class="stage-name">"Lan" • 28岁 / Age 28</div>
13900                            <div class="role lang-zh">作曲家和作词人</div>
13901                            <div class="role lang-en">Composer & Lyricist</div>
13902                        </div>
13903                        <div class="bio-description lang-zh">
13904                            <p>28岁作曲/作词人 Lan(Lan Xu)是落曦乐队的音乐核心,诗意的建筑师,用旋律与文字为乐队铸造独特音色。他擅长以细腻和声与结构构建情绪,从灵感速写到完整编曲掌控全局,创作过程兼具理性与直觉,常在钢琴与手稿间捕捉瞬间灵光。</p><p>作为作曲家,Lan雕琢旋律、和声织体和编曲选择,使标志性进行和动机贯穿乐队的歌曲。作为作词人,Lan偏爱富含意象的叙事、精心è
13904®¾è®¡çš„节奏和情感视角,为每首曲目赋予清晰的叙事声音。</p><p>Lan的创作定义了落曦的音乐轮廓和现场能量:编曲呼吸,动机重现,动态塑造乐队在舞台上的移动方式。在演出之夜,Lan在乐句处理和节奏控制上的提示将乐队拉入更紧密、更有冲击力的时刻,让听众实时感受。期待即将发布的新曲——Lan 的歌词与编曲将带你走进落曦的梦境听觉世界,留言告诉我们你最期待的关键词,和我们一起支持他的创作吧!</p>
13905                        </div>
13906                        <div class="bio-description lang-en">
13907                            <p>Lan (Lan Xu), 28, composer & lyricist of Luoxi, is the poetic architect — a timeless lyricist and the band's creative anchor, shaping the group's signature sound. His compositional craft blends intimate harmonies and cinematic arrangements, moving from melodic sketches to full productions with an instinctive, detail-driven process.</p><p>As a composer, Lan sculpts melodies, harmonic textures and arrangement choices so signature progressions and motifs thread through the band's songs. As a lyricist, Lan favors imagery-rich storytelling, deliberate cadence and an emotional perspective that gives each track a clear narrative voice.</p><p>Lan's writing defines Luoxi's sonic contours and live energy: arrangements breathe, motifs recur, and dynamics shape how the band moves on stage. On gig nights Lan's cues in phrasing and pacing pull the ensemble into tighter, more impactful moments that listeners feel in real time. New music is coming soon — drop a comment, share your thoughts, and follow for behind-the-scenes on his writing process and upcoming releases!</p>
13908                        </div>
13909                    </div>
13910                </div>
13911            </div>
13912        </div>
13913<div id="bio-ling-zhou" class="bio-page">
13914            <div class="bio-header">
13915                <div class="container">
13916                    <a href="#artists" data-action="back" class="back-button lang-zh">← 返回艺人阵容</a>
13917                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
13918                </div>
13919            </div>
13920            
13921            <div class="bio-content">
13922                <div class="bio-card">
13923                    <div class="bio-image-section">
13924                        <img src="https://media.echovira.com/luoxi/luoxi_ling_zhou_female_singer_portrait_1.png" alt="Ling Zhou" class="bio-artist-image"
13925                srcset="https://media.echovira.com/luoxi/luoxi_ling_zhou_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/luoxi/luoxi_ling_zhou_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/luoxi/luoxi_ling_zhou_female_singer_portrait_1-full.webp 1024w"
13926                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
13927                    </div>
13928                    <div class="bio-text-section">
13929                        <div class="bio-artist-title">
13930                            <h1 class="lang-zh">周凌</h1>
13931                            <h1 class="lang-en">Ling Zhou</h1>
13932                            <div class="stage-name">"Ling" • 24岁 / Age 24</div>
13933                            <div class="role lang-zh">女歌手</div>
13934                            <div class="role lang-en">Female Singer</div>
13935                        </div>
13936                        <div class="bio-description lang-zh">
13937                            <p>认识落曦的女声主唱Ling(周凌),24岁——她温暖亲切的嗓音就是乐队的心。她的声音质感细腻又有力,声线富有表情与能量,能把民谣的温柔和摇滚的爆发自然连接,为落曦的整体音色注入独特灵魂。</p><p>作为落曦的主唱,Ling蜜糖般坚韧的音色和广阔的音域为乐队提供标志性的情感中心。她的私密乐句处理和细腻的动态控制将安静的主歌转化为扣人心弦的时刻,无论在录音还是舞台上。风格上,她融合独立民谣温暖与微妙的R&B乐句处理,塑造乐队的音调方向。</p><p>在舞台上,她的表现——直接、开放且吸引人——å°
13937†è§‚众拉入歌曲,并将乐队的现场能量提升为共享体验。她的声音决策也影响编曲,促使乐队在她的演唱线条周围呼吸,并构建清晰有力的渐强。新歌里你会听到她的情感叙事与现场能量,别忘了关注她、点赞并留言告诉我们你的感受。</p>
13938                        </div>
13939                        <div class="bio-description lang-en">
13940                            <p>Meet Ling (Ling Zhou), 24 — the warm, approachable voice of Luoxi, whose expressive timbre and vibrant energy shape the band's sound. Her vocals blend intimate storytelling with powerful dynamics, elevating melodies and driving the group's emotional core; upcoming releases will showcase her range and stage presence.</p><p>As Luoxi's vocalist, Ling's honeyed yet resilient timbre and wide range give the band its signature emotional center. Her intimate phrasing and nuanced dynamics turn quiet verses into gripping moments on record and on stage. Stylistically she blends indie-folk warmth with subtle R&B phrasing, shaping the group's tonal direction.</p><p>Onstage her presence—direct, open and engaging—pulls the audience into the songs and lifts the band's live energy into something shared. Her vocal decisions also inform arrangements, prompting the band to breathe around her lines and build crescendos that land with clarity. Follow Ling, stream the new tracks, and drop a comment to join the conversation — your support helps the music grow.</p>
13941                        </div>
13942                    </div>
13943                </div>
13944            </div>
13945        </div>
13946<div id="bio-mei-chen" class="bio-page">
13947            <div class="bio-header">
13948                <div class="container">
13949                    <a href="#artists" data-action="back" class="back-button lang-zh">← 返回艺人阵容</a>
13950                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
13951                </div>
13952            </div>
13953            
13954            <div class="bio-content">
13955                <div class="bio-card">
13956                    <div class="bio-image-section">
13957                        <img src="https://media.echovira.com/luoxi/luoxi_mei_chen_female_singer_portrait_0.png" alt="Mei Chen" class="bio-artist-image"
13958                srcset="https://media.echovira.com/luoxi/luoxi_mei_chen_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_mei_chen_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_mei_chen_female_singer_portrait_0-full.webp 1024w"
13959                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
13960                    </div>
13961                    <div class="bio-text-section">
13962                        <div class="bio-artist-title">
13963                            <h1 class="lang-zh">陈美</h1>
13964                            <h1 class="lang-en">Mei Chen</h1>
13965                            <div class="stage-name">"Mei" • 25岁 / Age 25</div>
13966                            <div class="role lang-zh">女歌手</div>
13967                            <div class="role lang-en">Female Singer</div>
13968                        </div>
13969                        <div class="bio-description lang-zh">
13970                            <p>落曦主唱Mei(陈美),25岁——舞台上的女王嗓音,一把掌控全场的强劲人声,瞬间点燃每首歌的情感与能量。她的高音穿透力、细腻情感表达和现场爆发力构成了乐队独特的声音灵魂,新作品将全面呈现她的唱功与魅力。</p><p>指挥全场的主唱,Mei强大而精准的演唱传递、情感清晰度和磁性舞台表现锚定落曦的音乐。她温暖的女中音音色跨越广阔音域;精准的乐句处理、动态控制和灵魂影响塑造从私密时刻到高亢副歌的舞台表现。</p><p>她的声音线条推动编曲朝向大胆的和声和电影般的深度,为乐队提供清晰的旋律锚点。现场,她的舞台表现力和动态转换驱动观众——将更安静的主歌转化为充满张力的高潮,使每场演出感觉即时而有冲击力。想第一时间听到Mei的声音吗?现在就关注我们、在评论里告诉我们你最期待的曲风,并把这条动态分享给朋友。</p>
13971                        </div>
13972                        <div class="bio-description lang-en">
13973                            <p>Meet Mei (Mei Chen), 25 — the powerhouse diva and lead singer of Luoxi, whose commanding voice lights up every track with fire and feeling. Her piercing highs, emotive delivery, and live energy are the soul of the band's sound, and our upcoming releases will showcase her vocal prowess like never before.</p><p>A commanding vocalist whose powerful, controlled delivery and emotive clarity anchor Luoxi's sound. Her warm mezzo timbre spans a wide range; precise phrasing, dynamic control, and soulful influences shape both intimate moments and s
13973oaring choruses onstage.</p><p>Her vocal lines push arrangements toward bold harmonies and cinematic depth, giving the band clear melodic anchors. Live, her stage presence and dynamic shifts drive the crowd—turning quieter verses into charged climaxes and making each set feel immediate. Want an early listen? Follow us, stream the new music when it drops (link in bio), and tell us your favorite line in the comments below.</p>
13974                        </div>
13975                    </div>
13976                </div>
13977            </div>
13978        </div>
13979<div id="bio-tao-yang" class="bio-page">
13980            <div class="bio-header">
13981                <div class="container">
13982                    <a href="#artists" data-action="back" class="back-button lang-zh">← 返回艺人阵容</a>
13983                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
13984                </div>
13985            </div>
13986            
13987            <div class="bio-content">
13988                <div class="bio-card">
13989                    <div class="bio-image-section">
13990                        <img src="https://media.echovira.com/luoxi/luoxi_tao_yang_male_singer_portrait_2.png" alt="Tao Yang" class="bio-artist-image"
13991                srcset="https://media.echovira.com/luoxi/luoxi_tao_yang_male_singer_portrait_2-400.webp 400w, https://media.echovira.com/luoxi/luoxi_tao_yang_male_singer_portrait_2-800.webp 800w, https://media.echovira.com/luoxi/luoxi_tao_yang_male_singer_portrait_2-full.webp 1024w"
13992                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
13993                    </div>
13994                    <div class="bio-text-section">
13995                        <div class="bio-artist-title">
13996                            <h1 class="lang-zh">杨涛</h1>
13997                            <h1 class="lang-en">Tao Yang</h1>
13998                            <div class="stage-name">"Tao" • 28岁 / Age 28</div>
13999                            <div class="role lang-zh">男歌手</div>
14000                            <div class="role lang-en">Male Singer</div>
14001                        </div>
14002                        <div class="bio-description lang-zh">
14003                            <p>认识落曦乐队的主唱——Tao(杨涛),28岁,炙热摇滚嗓,原始能量与砂砾般的嗓音瞬间抓住你的心。他以粗粝质感与情感爆发的演唱风格,成为落曦音色里那股燃烧的力量,贯穿每一首歌的高潮与细腻。</p><p>火热的摇滚歌手,Tao的声音传递原始力量和织体沙砾。作为落曦的主唱,他温暖而沙哑的音色覆盖广阔音域,他的乐句处理在紧迫的呐喊和私密的低语之间自然移动,受朋克态度和布鲁斯色彩摇滚的影响。</p><p>他的动态处理将副歌推向宣泄,同时让主歌呼吸,而他的舞台表现以受控的强度聚焦注意力。在舞台上,他将乐队的音乐雕琢成冲击力的riff和大合唱Hook,将录音室编曲转化为高压现场时刻。敬请期待乐队即将发布的新曲,Tao的声音会把你带进一场既原始又细腻的音乐旅程;记得关注、点赞并在评论告诉我们你最期待哪一首!</p>
14004                        </div>
14005                        <div class="bio-description lang-en">
14006                            <p>Meet Tao (Tao Yang), the 28-year-old male singer of Luoxi — a fiery rocker with raw energy and vocal grit that sears through every chorus. His rough-edged timbre and emotionally explosive delivery anchor Luoxi's sound, turning quiet moments into tension and choruses into catharsis.</p><p>A fiery rocker whose voice delivers raw power and textured grit. As Luoxi's vocalist, his warm yet raspy timbre covers a wide range, and his phrasing moves naturally between urgent shouts and intimate whispers, shaped by punk attitude and blues-tinged rock.</p><p>His dynamics push choruses into catharsis while letting verses breathe, and his stage presence focuses attention with controlled intensity. On stage he sculpts the band's sound into punchy riffs and singalong hooks, turning studio arrangements into high-voltage live moments. Get ready for our upcoming releases that showcase his voice — follow, stream, and tell us in the comments which track y
14006ou're most excited for!</p>
14007                        </div>
14008                    </div>
14009                </div>
14010            </div>
14011        </div>
14012<div id="bio-wei-zhang" class="bio-page">
14013            <div class="bio-header">
14014                <div class="container">
14015                    <a href="#artists" data-action="back" class="back-button lang-zh">← 返回艺人阵容</a>
14016                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
14017                </div>
14018            </div>
14019            
14020            <div class="bio-content">
14021                <div class="bio-card">
14022                    <div class="bio-image-section">
14023                        <img src="https://media.echovira.com/luoxi/luoxi_wei_zhang_male_singer_portrait_0.png" alt="Wei Zhang" class="bio-artist-image"
14024                srcset="https://media.echovira.com/luoxi/luoxi_wei_zhang_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_wei_zhang_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_wei_zhang_male_singer_portrait_0-full.webp 1024w"
14025                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
14026                    </div>
14027                    <div class="bio-text-section">
14028                        <div class="bio-artist-title">
14029                            <h1 class="lang-zh">张伟</h1>
14030                            <h1 class="lang-en">Wei Zhang</h1>
14031                            <div class="stage-name">"Wei" • 26岁 / Age 26</div>
14032                            <div class="role lang-zh">男歌手</div>
14033                            <div class="role lang-en">Male Singer</div>
14034                        </div>
14035                        <div class="bio-description lang-zh">
14036                            <p>认识张伟(舞台名:Wei),26岁,落曦乐队充满魅力的男主唱,他富有激情的演唱和强大的舞台气场塑造每场演出,连接乐队与观众。他的声音移动整个房间。</p><p>魅力型前台,Wei的激情演唱和指挥全场的舞台光环塑造每场表演并连接乐队与观众。作为主唱,他结合温暖的男高音音色与广阔音域、细腻的乐句处理和动态控制,汲取独立摇滚和灵魂影响。</p><p>Wei的声音线条引导落曦的编曲,将副歌推向更高并赋予现场演出驱动脉搏。现场录音展示他在歌曲中段改变强度的技巧,用精准控制提升乐队能量。我们即将推出的新作品将Wei的音域和叙事能力置于前台中心——你不会想错过这些曲目。音乐爱好者:流媒体播放、分享,并告诉我们你最期待听到的下一个声音时刻!关注@LuoxiBand获取发布、视频和Wei的幕后花絮。</p>
14037                        </div>
14038                        <div class="bio-description lang-en">
14039                            <p>Meet Wei (Wei Zhang), 26 — the charismatic frontman of Luoxi, with passionate vocals and a powerful stage aura. His voice blends raw emotion with technical finesse, delivering soaring highs and intimate, hushed moments that stick with you.</p><p>Charismatic frontman whose passionate vocals and commanding stage aura shape every performance and connect band and audience. As a vocalist he combines a warm tenor timbre with wide range, nuanced phrasing and dynamic control, drawing on indie rock and soul influences.</p><p>Wei's vocal lines guide Luoxi's arrangements, pushing choruses higher and giving live sets their driving pulse. Live recordings show his skill changing intensity mid-song, lifting the band's energy with precise control. We're counting down to new releases that put Wei's range and storytelling front and center — you won't want to miss these tracks. Music lovers: stream, share, and tell us which vocal moment you're most excited to hear next! Follow @LuoxiBand for releases, videos, and behind-the-scenes with Wei.</p>
14040                        </div>
14041                    </div>
14042                </div>
14043            </div>
14044        </div>
14045<div id="bio-xia-wu" class="bio-page">
14046            <div class="bio-header">
14047                <div class="container">
14048                    <a href="#artists" data-action="back" class="back-button lang-zh">← 返回艺人阵容</a>
14049                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
14050                </div>
14051            </div>
14052            
14053            <div class="bio-content">
14054                <div class="bio-card">
14055                    <div class="bio-image-section">
14056                        <img src="https://media.echovira.com/luoxi/luoxi_xia_wu_female_singer_portrait_0.png" alt="Xia Wu" class="bio-artist-image"
14057                srcset="https://media.echovira.com/luoxi/luoxi_xia_wu_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_xia_wu_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_xia_wu_female_singer_portrait_0-full.
14057webp 1024w"
14058                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
14059                    </div>
14060                    <div class="bio-text-section">
14061                        <div class="bio-artist-title">
14062                            <h1 class="lang-zh">吴夏</h1>
14063                            <h1 class="lang-en">Xia Wu</h1>
14064                            <div class="stage-name">"Xia" • 26岁 / Age 26</div>
14065                            <div class="role lang-zh">女歌手</div>
14066                            <div class="role lang-en">Female Singer</div>
14067                        </div>
14068                        <div class="bio-description lang-zh">
14069                            <p>认识落曦的主唱之一——26岁的女歌手吴夏(艺名:Xia),她以强烈的中低音和爆发力十足的演唱风格成为乐队的声音灵魂。她是那种既狠又率性的舞台者,拥有介于温暖与穿透之间的mezzo质感,能在低沉与高亢之间自由转换,瞬间点燃每一首歌的情绪。</p><p>Xia的声音为落曦的编曲注入层次与张力,让乐队的氛围既细腻又强烈,新作品将全面展现她的技巧与情感。指挥全场的女主唱,她丰富的女中音融合温暖与力量。</p><p>她的女中音音色舒适地位于中低音域,拥有饱满的低音区和灵活的高音延伸,允许温暖颗粒感的音色和强大的belt。她的乐句处理偏爱对话式节奏和动态对比,从私密细腻到大胆高潮之间移动。在录音中,她用深沉、圆润的主线锚定编曲;现场,她拥有舞台,推动节奏并邀请观众反应。快来关注落曦、收听新歌预告,留言告诉我们你最期待哪一句或哪一段,一起为她打call!</p>
14070                        </div>
14071                        <div class="bio-description lang-en">
14072                            <p>Meet Xia (Xia Wu), 26 — the fierce starlet and female singer of Luoxi whose powerful mezzo presence and dynamic vocal energy anchor the band's sound. Her voice moves effortlessly from warm low tones to cutting high notes, adding emotional depth and dramatic layers to Luoxi's arrangements; get ready for new music that showcases her range and intensity.</p><p>Commanding female voice, a fierce singer with a rich mezzo that blends warmth and force. Her mezzo timbre sits comfortably in the lower-mid range with a full low register and a flexible upper extension, allowing warm grainy tones and strong belts.</p><p>Her phrasing favors conversational cadences and dynamic contrast, moving from intimate nuance to bold climaxes. On record she anchors arrangements with dark, rounded lead lines; live she owns the stage, pushing tempo and inviting audience response. Follow Luoxi, stream the upcoming releases, and drop a comment telling us which part of her voice excites you most — let's celebrate her artistry together!</p>
14073                        </div>
14074                    </div>
14075                </div>
14076            </div>
14077        </div>
14078<div id="bio-ying-sun" class="bio-page">
14079            <div class="bio-header">
14080                <div class="container">
14081                    <a href="#artists" data-action="back" class="back-button lang-zh">← 返回艺人阵容</a>
14082                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
14083                </div>
14084            </div>
14085            
14086            <div class="bio-content">
14087                <div class="bio-card">
14088                    <div class="bio-image-section">
14089                        <img src="https://media.echovira.com/luoxi/luoxi_ying_sun_female_singer_portrait_0.png" alt="Ying Sun" class="bio-artist-image"
14090                srcset="https://media.echovira.com/luoxi/luoxi_ying_sun_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/luoxi/luoxi_ying_sun_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/luoxi/luoxi_ying_sun_female_singer_portrait_0-full.webp 1024w"
14091                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
14092                    </div>
14093                    <div class="bio-text-section">
14094                        <div class="bio-artist-title">
14095                            <h1 class="lang-zh">孙颖</h1>
14096                            <h1 class="lang-en">Ying Sun</h1>
14097                            <div class="stage-name">"Ying" • 23岁 / Age 23</div>
14098                            <div class="role lang-zh">女歌手</div>
14099                            <div class="role lang-en">Female Singer</div>
14100                        </div>
14101                        <div class="bio-description lang-zh">
14102                            <p>
14102落曦的女主唱Ying(Ying Sun),23岁,以明亮且充满欢愉的嗓音成为乐队的光芒与灵魂。她的声音清亮、富有能量,演绎时带来温暖与振奋,让每首歌的情绪更加鲜明,完美融入落曦独特的音色与氛围。</p><p>乐队的明亮之光——在每场演出中都充满欢愉和振奋。作为主唱,Ying清亮、温暖的声音拥有灵活的中高音域、富有表现力的乐句处理和动态控制,为落曦提供高亢的旋律中心和指挥全场的舞台表现力,汲取独立流行和当代民谣的灵感。</p><p>在录音中,她用旋律Hook和敏感的动态为编曲增色。现场,她的乐句处理将安静时刻转化为大合唱,并用传染性的能量驱动乐队的渐强,将情感传递推向高潮。期待我们即将发布的新歌,让Ying的声音带你走进落曦的世界——现在就关注、收听并在评论告诉我们你最爱的瞬间!</p>
14103                        </div>
14104                        <div class="bio-description lang-en">
14105                            <p>Meet Ying (Ying Sun), 23 — Luoxi's bright-voiced lead singer, the joyful, uplifting light of the band. Her clear, energetic vocal timbre brings warmth and lift, shaping every song's emotion and blending seamlessly with Luoxi's atmospheric sound.</p><p>The band's bright light — joyful and uplifting in every performance. As vocalist, Ying's clear, warm timbre, agile mid-to-high range, expressive phrasing and dynamic control give Luoxi a soaring melodic center and commanding stage presence, drawing on indie pop and contemporary folk.</p><p>On record she colors arrangements with melodic hooks and sensitive dynamics. Live, her phrasing turns quiet moments into sing-alongs and drives the band's crescendos with contagious energy. Big things coming — stream our upcoming releases, follow the journey, and drop a comment to share which note moved you most!</p>
14106                        </div>
14107                    </div>
14108                </div>
14109            </div>
14110        </div>
14111</div>
14112<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
14113  <nav aria-label="Site pages">
14114    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
14115    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
14116    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
14117    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
14118  </nav>
14119  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
14120</footer>
14121`;e.s(["LuoxiEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=(0,t.injectFluidCanvas)(a,"#d09010","#0d1117",.28);function s(e){document.body.classList.remove("lang-zh","lang-en"),document.body.classList.add("lang-"+e),a.querySelectorAll("[data-lang]").forEach(e=>e.classList.remove("active")),a.querySelector(`[data-lang="${e}"]`)?.classList.add("active")}function r(e){a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display="none"});let i=document.getElementById("bio-"+e);
14121i&&(i.classList.add("active"),window.scrollTo(0,0))}function n(){a.querySelectorAll(".bio-page").forEach(e=>e.classList.remove("active")),a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display=""}),window.scrollTo(0,0)}function o(e){let a=e.target,i=a.closest("[data-artist-id]");if(i){e.preventDefault(),r(i.dataset.artistId);return}if(a.closest('[data-action="back"]')){e.preventDefault(),n();return}}window.setLanguage=s,s("zh"),a.querySelector('[data-lang="zh"]')?.addEventListener("click",()=>s("zh")),a.querySelector('[data-lang="en"]')?.addEventListener("click",()=>s("en")),window.showArtistBio=r,window.hideBioPage=n,window.showMainPage=n;let l=document.getElementById("mobileToggle"),c=document.getElementById("navMenu");l&&c&&l.addEventListener("click",()=>c.classList.toggle("active"));let d=()=>document.getElementById("mainNav")?.classList.toggle("scrolled",window.scrollY>100);return a.addEventListener("click",o),window.addEventListener("scroll",d),()=>{i(),a.removeEventListener("click",o),window.removeEventListener("scroll",d),delete window.setLanguage,delete window.showArtistBio,delete window.hideBioPage,delete window.showMainPage}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,className:"echovira-page-root",dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(n)},suppressHydrationWarning:!0}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},720687,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n="https://media.echovira.com/mastering",o=`
14122  <link rel="preconnect" href="https://fonts.googleapis.com">
14123  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
14124  <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600&family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&display=swap" rel="stylesheet">
14125  <script type="application/ld+json">
14126  {
14127    "@context": "https://schema.org",
14128    "@type": "Service",
14129    "name": "EchoVira Mastering",
14130    "serviceType": "Audio Mastering",
14131    "provider": {
14132      "@type": "Organization",
14133      "name": "EchoVira",
14134      "url": "https://echovira.com"
14135    },
14136    "description": "Professional stereo mastering, stem mastering, and album mastering for independent artists. Streaming-optimized delivery for Spotify, Apple Music, YouTube, Tidal, and all major platforms.",
14137    "areaServed": "Worldwide",
14138    "url": "https://mastering.echovira.com",
14139    "hasOfferCatalog": {
14140      "@type": "OfferCatalog",
14141      "name": "Mastering Services",
14142      "itemListElement": [
14143        {"@type": "Offer", "itemOffered": {"@type": "Service", "name": "Stereo Mastering"}},
14144        {"@type": "Offer", "itemOffered": {"@type": "Service", "name": "Stem Mastering"}},
14145        {"@type": "Offer", "itemOffered": {"@type": "Service", "name": "Album Mastering"}},
14146        {"@type": "Offer", "itemOffered": {"@type": "Service", "name": "DDP Master for CD Manufacturing"}}
14147      ]
14148    }
14149  }
14150  </script>
14151  <style>
14152    .vc_row[data-vc-full-width],.wpb_column,.vc_column_container,.wpb_wrapper,.entry-content,.site-content-contain,#content,.site-content,.site,#page,main{width:100%!important;max-width:100%!important;padding:0!important;margin:0!important}
14153    :root{
14154      --ev-bg:#09101e;
14155      --ev-fg:#e8e0d0;
14156      --bg:#09101e;
14157      --bg2:#0f1a2e;
14158      --fg:#e8e0d0;
14159      --fg-dim:rgba(232,224,208,0.65);
14160      --gold:#bfa46a;
14161      --gold-dim:rgba(191,164,106,0.18);
14162      --border:rgba(191,164,106,0.15);
14163      --accent:#d4b87a;
14164      --radius:6px;
14165    }
14166    *{margin:0;padding:0;box-sizing:border-box}
14167    html{scroll-behavior:smooth}
14168    body{font-family:'IBM Plex Sans',system-ui,sans-serif;background:var(--ev-bg);color:var(--ev-fg);overflow-x:hidden;line-height:1.6}
14169    a{color:var(--gold);text-decoration:none}
14170    a:hover{color:var(--accent)}
14171
14172    /* Nav */
14173    .ev-nav{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(9, 16, 30, 0.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);padding:0.9rem 0}
14174    .ev-nav-inner{max-width:1240px;margin:0 auto;padding:0 2rem;display:flex;justify-content:space-between;align-items:center;gap:2rem}
14175    .ev-logo{display:flex;align-items:center;gap:0.7rem;font-size:1rem;font-weight:600;color:var(--fg);letter-spacing:0.02em;text-decoration:none}
14176    .ev-logo-mark{width:22px;height:22px;display:grid;grid-template-columns:1fr 1fr;gap:3px}
14177    .ev-logo-mark span{background:var(--fg);border-radius:3px;display:block}
14178    .ev-logo-text{font-family:'Libre Baskerville',Georgia,serif;font-style:italic}
14179    .ev-logo-label{color:var(--gold);font-style:normal}
14180    .ev-nav-links{display:flex;gap:2rem;list-style:none}
14181    .ev-nav-links a{font-size:0.875rem;color:var(--fg-dim);transition:color 0.2s}
14182    .ev-nav-links a:hover{color:var(--fg)}
14183    .ev-nav-cta{background:var(--gold);color:#09101e;padding:0.5rem 1.25rem;border-radius:var(--radius);font-size:0.875rem;font-weight:600;transition:background 0.2s;white-space:nowrap}
14184    .ev-nav-cta:hover{background:var(--accent);color:#09101e}
14185
14186    /* Hero */
14187    .ev-hero{min-height:100vh;display:flex;align-items:center;padding:8rem 2rem 4rem;background:radial-gradient(ellipse 900px 500px at 10% 40%,rgba(191,164,106,0.08),transparent 65%),radial-gradient(ellipse 700px 400px at 90% 10%,rgba(15,26,46,0.9),transparent)}
14188    .ev-hero-inner{max-width:1240px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}
14189    .ev-eyebrow{display:inline-flex;align-items:center;gap:0.5rem;font-size:0.75rem;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:var(--gold);margin-bottom:1.5rem}
14190    .ev-eyebrow::before{content:'';display:block;width:1.5rem;height:1px;background:var(--gold)}
14191    h1{font-family:'Libre Baskerville',Georgia,serif;font-size:clamp(2.4rem,5.5vw,4.5rem);line-height:1.06;font-weight:700;letter-spacing:-0.02em;margin-bottom:1.5rem}
14192    h1 em{color:var(--gold);font-style:italic}
14193    .ev-hero-body{font-size:1.125rem;color:var(--fg-dim);line-height:1.7;max-width:44ch;margin-bottom:2.5rem}
14194    .ev-cta-row{display:flex;gap:1rem;flex-wrap:wrap}
14195    .ev-btn{display:inline-block;padding:0.75rem 1.75rem;border-radius:var(--radius);font-size:0.9375rem;font-weight:600;transition:all 0.2s;cursor:pointer;border:none}
14196    .ev-btn-primary{background:var(--gold);color:#09101e}
14197    .ev-btn-primary:hover{background:var(--accent);color:#09101e}
14198    .ev-btn-ghost{background:transparent;color:var(--fg);border:1px solid var(--border)}
14199    .ev-btn-ghost:hover{border-color:var(--gold);color:var(--gold)}
14200    .ev-hero-stats{display:flex;flex-direction:column;gap:1.5rem}
14201    .ev-stat{border-left:2px solid var(--gold);padding-left:1.25rem}
14202    .ev-stat-val{font-family:'Libre Baskerville',Georgia,serif;font-size:2rem;font-weight:700;color:var(--accent);line-height:1}
14203    .ev-stat-label{font-size:0.8125rem;color:var(--fg-dim);letter-spacing:0.04em;margin-top:0.25rem}
14204
14205    /* Sections */
14206    section{padding:6rem 2rem}
14207    .ev-section-inner{max-width:1240px;margin:0 auto}
14208    .ev-muted{background:var(--bg2)}
14209    h2{font-family:'Libre Baskerville',Georgia,serif;font-size:clamp(1.8rem,3.5vw,2.8rem);line-height:1.12;font-weight:700;letter-spacing:-0.015em;margin-bottom:1rem}
14210    .ev-section-body{font-size:1.0625rem;color:var(--fg-dim);max-width:56ch;line-height:1.72;margin-bottom:3rem}
14211
14212    /* Services grid */
14213    .ev-services-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}
14214    .ev-service-card{background:rgba(255,255,255,0.04);border:1px solid var(--border);border-radius:10px;padding:1.75rem;transition:border-color 0.2s,transform 0.2s}
14215    .ev-service-card:hover{border-color:rgba(191,164,106,0.4);transform:translateY(-3px)}
14216    .ev-service-icon{width:2.5rem;height:2.5rem;border-radius:8px;background:var(--gold-dim);border:1px solid rgba(191,164,106,0.3);display:flex;align-items:center;justify-content:center;margin-bottom:1rem;font-size:1.1rem}
14217    h3{font-family:'Libre Baskerville',Georgia,serif;font-size:1.1rem;font-weight:700;margin-bottom:0.6rem}
14218    .ev-service-desc{font-size:0.9rem;color:var(--fg-dim);line-height:1.65}
14219
14220    /* Process */
14221    .ev-process-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:2rem}
14222    .ev-process-step{display:flex;gap:1.25rem;align-items:flex-start}
14223    .ev-step-num{font-family:'Libre Baskerville',Georgia,serif;font-size:2.5rem;font-weight:700;color:var(--gold);opacity:0.7;line-height:1;flex-shrink:0;width:2.5rem}
14224    .ev-step-title{font-size:1rem;font-weight:600;margin-bottom:0.4rem}
14225    .ev-step-body{font-size:0.875rem;color:var(--fg-dim);line-height:1.65}
14226
14227    /* Technical */
14228    .ev-tech-highlights{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}
14229    .ev-tech-item{background:rgba(255,255,255,0.03);border:1px solid var(--border);border-radius:8px;padding:1.25rem 1.5rem}
14230    .ev-tech-label{font-size:0.7rem;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;color:var(--gold);margin-bottom:0.35rem}
14231    .ev-tech-val{font-size:0.9375rem;color:var(--fg)}
14232
14233    /* Loudness table */
14234    .ev-loudness-table{width:100%;border-collapse:collapse;margin-top:2rem;font-size:0.9rem}
14235    .ev-loudness-table th{text-align:left;padding:0.75rem 1rem;font-size:0.7rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--gold);border-bottom:1px solid var(--border)}
14236    .ev-loudness-table td{padding:0.75rem 1rem;color:var(--fg-dim);border-bottom:1px solid rgba(255,255,255,0.05)}
14237    .ev-loudness-table tr:last-child td{border-bottom:none}
14238    .ev-loudness-val{font-family:'IBM Plex Sans',monospace;color:var(--fg);font-weight:500}
14239
14240    /* FAQ */
14241    .ev-faq-list{display:flex;flex-direction:column;gap:1px;border:1px solid var(--border);border-radius:10px;overflow:hidden}
14242    .ev-faq-item{background:rgba(255,255,255,0.03)}
14243    .ev-faq-item+.ev-faq-item{border-top:1px solid var(--border)}
14244    .ev-faq-q{list-style:none;padding:1.25rem 1.5rem;font-size:1rem;font-weight:500;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:1rem;transition:background 0.15s}
14245    .ev-faq-q::-webkit-details-marker{display:none}
14246    .ev-faq-q:hover{background:rgba(191,164,106,0.06)}
14247    .ev-faq-q::after{content:'+';color:var(--gold);font-size:1.25rem;flex-shrink:0;transition:transform 0.25s}
14248    .ev-faq-item[open] .ev-faq-q::after{transform:rotate(45deg)}
14249    .ev-faq-a{padding:0 1.5rem 1.25rem;font-size:0.9375rem;color:var(--fg-dim);line-height:1.72}
14250    
14251
14252    /* Network */
14253    .ev-network-row{display:flex;gap:1rem;flex-wrap:wrap;margin-top:2rem}
14254    .ev-network-pill{display:inline-flex;align-items:center;gap:0.5rem;padding:0.4rem 1rem;border:1px solid var(--border);border-radius:99px;font-size:0.8125rem;color:var(--fg-dim);
14254transition:border-color 0.2s,color 0.2s}
14255    .ev-network-pill:hover{border-color:var(--gold);color:var(--gold)}
14256
14257    /* CTA band */
14258    .ev-cta-band{background:linear-gradient(135deg,rgba(191,164,106,0.12),rgba(9,16,30,0.9));border-top:1px solid var(--border);border-bottom:1px solid var(--border);text-align:center;padding:6rem 2rem}
14259    .ev-cta-band h2{margin-bottom:1rem}
14260    .ev-cta-band p{color:var(--fg-dim);max-width:48ch;margin:0 auto 2.5rem;font-size:1.0625rem;line-height:1.7}
14261    .ev-cta-row-center{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap}
14262
14263    /* Footer */
14264    .ev-footer{background:var(--bg);border-top:1px solid var(--border);padding:3rem 2rem}
14265    .ev-footer-inner{max-width:1240px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1.5rem}
14266    .ev-footer-brand{font-family:'Libre Baskerville',Georgia,serif;font-size:1rem;font-weight:700;color:var(--fg)}
14267    .ev-footer-links{display:flex;gap:1.5rem;flex-wrap:wrap}
14268    .ev-footer-links a{font-size:0.8125rem;color:var(--fg-dim)}
14269    .ev-footer-links a:hover{color:var(--gold)}
14270    .ev-copyright{font-size:0.75rem;color:var(--fg-dim)}
14271
14272    @media(max-width:768px){
14273      .ev-hero-inner{grid-template-columns:1fr}
14274      .ev-hero-stats{flex-direction:row;flex-wrap:wrap}
14275      .ev-nav-links{display:none}
14276    }
14277  </style>
14278
14279<nav class="ev-nav" aria-label="EchoVira Mastering navigation">
14280  <div class="ev-nav-inner">
14281    <a href="https://echovira.com" class="ev-logo" aria-label="EchoVira home">
14282      <div class="ev-logo-mark"><span></span><span></span><span></span><span></span></div>
14283      <span class="ev-logo-text">
14283EchoVira <span class="ev-logo-label">Mastering</span></span>
14284    </a>
14285    <ul class="ev-nav-links" role="list">
14286      <li><a href="#services">Services</a></li>
14287      <li><a href="#process">Process</a></li>
14288      <li><a href="#specs">Specs</a></li>
14289      <li><a href="#faq">FAQ</a></li>
14290      <li><a href="https://echovira.com">Network</a></li>
14291    </ul>
14292    <a href="/contact" class="ev-btn ev-nav-cta">Submit a project</a>
14293  </div>
14294</nav>
14295
14296<span id="main-content" tabindex="-1"></span>
14297
14298<header class="ev-hero" role="banner">
14299  <div class="ev-hero-inner">
14300    <div>
14301      <div class="ev-eyebrow">Professional Audio Mastering</div>
14302      <h1>Your music, <em>ready</em> for every platform.</h1>
14303      <p class="ev-hero-body">
14304        EchoVira Mastering provides professional stereo and stem mastering for independent artists and labels worldwide.
14305        Transparent process, precise results, streaming-optimized delivery for Spotify, Apple Music, YouTube, Tidal, and every major platform.
14306      </p>
14307      <div class="ev-cta-row">
14308        <a href="/contact" class="ev-btn ev-btn-primary">Submit your project</a>
14309        <a href="#services" class="ev-btn ev-btn-ghost">View services</a>
14310      </div>
14311    </div>
14312    <div class="ev-hero-stats" aria-label="Key mastering facts">
14313      <div class="ev-stat">
14314        <div class="ev-stat-val">Stereo &amp; stem</div>
14315        <div class="ev-stat-label">Mastering formats</div>
14316      </div>
14317      <div class="ev-stat">
14318        <div class="ev-stat-val">All platforms</div>
14319        <div class="ev-stat-label">Streaming-optimized delivery</div>
14320      </div>
14321      <div class="ev-stat">
14322        <div class="ev-stat-val">5–7 days</div>
14323        <div class="ev-stat-label">Standard turnaround</div>
14324      </div>
14325      <div class="ev-stat">
14326        <div class="ev-stat-val">Open to all</div>
14327        <div class="ev-stat-label">EchoVira artists and beyond</div>
14328      </div>
14329    </div>
14330  </div>
14331</header>
14332
14333<section id="room" aria-labelledby="room-heading">
14334  <div class="ev-section-inner">
14335    <div class="ev-eyebrow">The Room</div>
14336    <h2 id="room-heading">Mastered in a treated, full-range listening environment.</h2>
14337    <p class="ev-section-body">
14338      Every decision happens on calibrated monitors in a room built for honest playback — not on a laptop,
14339      not on consumer headphones. Reference listening across streaming platforms, earbuds, and car audio
14340      before every delivery.
14341    </p>
14342    <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;margin-top:3rem;">
14343      <figure style="margin:0;border-radius:14px;overflow:hidden;">
14344        <img loading="lazy" decoding="async" src="${n}/hero.webp"
14345             alt="EchoVira mastering control room — calibrated monitoring environment"
14346             style="display:block;width:100%;aspect-ratio:16/9;object-fit:cover;" />
14347      </figure>
14348      <figure style="margin:0;border-radius:14px;overflow:hidden;">
14349        <img loading="lazy" decoding="async" src="${n}/studio_detail.webp"
14350             alt="Mastering console detail — outboard processing chain"
14351             style="display:block;width:100%;aspect-ratio:16/9;object-fit:cover;" />
14352      </figure>
14353      <figure style="margin:0;border-radius:14px;overflow:hidden;">
14354        <img loading="lazy" decoding="async" src="${n}/lesson_scene.webp"
14355             alt="Producer reviewing a session at the mastering desk"
14356             style="display:block;width:100%;aspect-ratio:16/9;object-fit:cover;" />
14357      </figure>
14358      <figure style="margin:0;border-radius:14px;overflow:hidden;">
14359        <img loading="lazy" decoding="async" src="${n}/collab.webp"
14360             alt="Artist and engineer collaborating on a master"
14361             style="display:block;width:100%;aspect-ratio:16/9;object-fit:cover;" />
14362      </figure>
14363    </div>
14364  </div>
14365</section>
14366
14367<section id="services" class="ev-muted" aria-labelledby="services-heading">
14368  <div class="ev-section-inner">
14369    <div class="ev-eyebrow">Services</div>
14370    <h2 id="services-heading">Professional mastering for every format</h2>
14371    <p class="ev-section-body">
14372      From a debut single to a full-length album, every mastering project receives individual attention —
14373      no batch processing, no generic presets, no compromise.
14374    </p>
14375    <div class="ev-services-grid">
14376      <article class="ev-service-card">
14377        <div class="ev-service-icon" aria-hidden="true">◈</div>
14378        <h3>Stereo mastering</h3>
14379        <p class="ev-service-desc">
14380          Professional 2-track mastering from your final mix. Balanced dynamics, precision EQ,
14381          tonal correction, and loudness targeting calibrated for your intended listening environment and primary platform.
14382        </p>
14383      </article>
14384      <article class="ev-service-card">
14385        <div class="ev-service-icon" aria-hidden="true">⊞</div>
14386        <h3>Stem mastering</h3>
14387        <p class="ev-service-desc">
14388          Submit grouped stems for greater flexibility in the mastering stage — adjust the balance
14389          between drums, bass, melodic elements, and vocals without committing to a full remix.
14390          Ideal for complex mixes where you need more control.
14391        </p>
14392      </article>
14393      <article class="ev-service-card">
14394        <div class="ev-service-icon" aria-hidden="true">≡</div>
14395        <h3>Album mastering</h3>
14396        <p class="ev-service-desc">
14397          Full album projects treated as a unified sonic narrative — track spacing, sequencing, tonal
14398          consistency, and dynamic continuity handled cohesively across every song. Your album sounds like an album.
14399        </p>
14400      </article>
14401      <article class="ev-service-card">
14402        <div class="ev-service-icon" aria-hidden="true">▶</div>
14403        <h3>Streaming-platform optimization</h3>
14404        <p class="ev-service-desc">
14405          Loudness normalization precisely calibrated for Spotify (−14 LUFS), Apple Music (−16 LUFS),
14406          YouTube (−13 to −14 LUFS), and Tidal — so your track never loses punch to algorithmic volume reduction.
14407        </p>
14408      </article>
14409      <article class="ev-service-card">
14410        <div class="ev-service-icon" aria-hidden="true">◎</div>
14411        <h3>Reference matching</h3>
14412        <p class="ev-service-desc">
14413          Submit a reference track and we'll target the sonic profile — frequency balance, dynamic range,
14414          and loudness — to match your intended aesthetic while preserving the unique character of your music.
14415        </p>
14416      </article>
14417      <article class="ev-service-card">
14418        <div class="ev-service-icon" aria-hidden="true">⬡</div>
14419        <h3>DDP master for CD manufacturing</h3>
14420        <p class="ev-service-desc">
14421          Physical release and CD-quality delivery in DDP format. Complete track metadata, ISRC codes,
14422          index markers, and CD-Text included. Compatible with all major CD manufacturing services.
14423        </p>
14424      </article>
14425    </div>
14426  </div>
14427</section>
14428
14429<section id="process" aria-labelledby="process-heading">
14430  <div class="ev-section-inner">
14431    <div class="ev-eyebrow">Our Approach</div>
14432    <h2 id="process-heading">Mastering should serve the music, not override it.</h2>
14433    <p class="ev-section-body">
14434      Good mastering is invisible — the listener only hears the music. Our process starts with understanding your artistic intent:
14435      what genre, what platform, what reference aesthetic. Every decision follows from that understanding.
14436    </p>
14437    <div class="ev-process-grid" role="list">
14438      <div class="ev-process-step" role="listitem">
14439        <div class="ev-step-num" aria-hidden="true">01</div>
14440        <div>
14441          <div class="ev-step-title">Submit your mix</div>
14442          <p class="ev-step-body">
14443            Send your final mix as a 24-bit WAV or AIFF at your session's native sample rate.
14444            Leave 3–6 dB of headroom — do not apply a limiter to your master bus before sending.
14445          </p>
14446        </div>
14447      </div>
14448      <div class="ev-process-step" role="listitem">
14449        <div class="ev-step-num" aria-hidden="true">02</div>
14450        <div>
14451          <div class="ev-step-title">Reference and intent brief</div>
14452          <p class="ev-step-body">
14453            Share your reference tracks, target platforms, and any notes on the sonic direction you're after.
14454            We listen before we touch a single plugin.
14455          </p>
14456        </div>
14457      </div>
14458      <div class="ev-process-step" role="listitem">
14459        <div class="ev-step-num" aria-hidden="true">03</div>
14460        <div>
14461          <div class="ev-step-title">Mastering session</div>
14462          <p class="ev-step-body">
14463            Full-range monitoring in a treated acoustic environment. EQ, compression, limiting, and loudness
14464            decisions made in service of your music — not a template. Every track is different.
14465          </p>
14466        </div>
14467      </div>
14468      <div class="ev-process-step" role="listitem">
14469        <div class="ev-step-num" aria-hidden="true">04</div>
14470        <div>
14471          <div class="ev-step-title">Delivery and revisions</div>
14472          <p class="ev-step-body">
14473            Delivered in 16-bit and 24-bit WAV, with optional DDP. One free revision is included —
14474            we address your notes precisely and document every change.
14475          </p>
14476        </div>
14477      </div>
14478    </div>
14479  </div>
14480</section>
14481
14482<section id="specs" class="ev-muted" aria-labelledby="specs-heading">
14483  <div class="ev-section-inner">
14484    <div class="ev-eyebrow">Technical Reference</div>
14485    <h2 id="specs-heading">Loudness targets by platform</h2>
14486    <p class="ev-section-body">
14487      Every major streaming platform applies loudness normalization. We calibrate your master to the correct target
14488      so your track plays at full intent on every service.
14489    </p>
14490    <table class="ev-loudness-table" aria-label="Streaming loudne
14490ss targets">
14491      <thead>
14492        <tr>
14493          <th scope="col">Platform</th>
14494          <th scope="col">Target LUFS (integrated)</th>
14495          <th scope="col">True Peak limit</th>
14496          <th scope="col">Notes</th>
14497        </tr>
14498      </thead>
14499      <tbody>
14500        <tr><td>Spotify</td><td class="ev-loudness-val">−14 LUFS</td><td class="ev-loudness-val">−1 dBTP</td><td style="color:var(--fg-dim)">Loud mastering is turned down; headroom helps</td></tr>
14501        <tr><td>Apple Music</td><td class="ev-loudness-val">−16 LUFS</td><td class="ev-loudness-val">−1 dBTP</td><td style="color:var(--fg-dim)">Sound Check can be disabled; we account for both</td></tr>
14502        <tr><td>YouTube</td><td class="ev-loudness-val">−13 to −14 LUFS</td><td class="ev-loudness-val">−1 dBTP</td><td style="color:var(--fg-dim)">Compression applied to loud tracks</td></tr>
14503        <tr><td>Tidal</td><td class="ev-loudness-val">−14 LUFS</td><td class="ev-loudness-val">−1 dBTP</td><td style="color:var(--fg-dim)">MQA-compatible delivery available</td></tr>
14504        <tr><td>Amazon Music</td><td class="ev-loudness-val">−14 LUFS</td><td class="ev-loudness-val">−2 dBTP</td><td style="color:var(--fg-dim)">Slightly more conservative TP limit</td></tr>
14505        <tr><td>CD / Physical</td><td class="ev-loudness-val">−9 to −12 LUFS</td><td class="ev-loudness-val">−0.1 dBTP</td><td style="color:var(--fg-dim)">No normalization; DDP delivery included</td></tr>
14506      </tbody>
14507    </table>
14508
14509    <div class="ev-tech-highlights" style="margin-top:3rem">
14510      <div class="ev-tech-item">
14511        <div class="ev-tech-label">Monitoring environment</div>
14512        <div class="ev-tech-val">Acoustically treated — full-range calibrated</div>
14513      </div>
14514      <div class="ev-tech-item">
14515        <div class="ev-tech-label">Reference listening</div>
14516        <div class="ev-tech-val">Streaming platforms, earbuds, car audio</div>
14517      </div>
14518      <div class="ev-tech-item">
14519        <div class="ev-tech-label">Delivery formats</div>
14520        <div class="ev-tech-val">16-bit WAV, 24-bit WAV, DDP</div>
14521      </div>
14522      <div class="ev-tech-item">
14523        <div class="ev-tech-label">Accepted submission formats</div>
14524        <div class="ev-tech-val">WAV, AIFF — 24-bit, 44.1–192 kHz</div>
14525      </div>
14526      <div class="ev-tech-item">
14527        <div class="ev-tech-label">Revision policy</div>
14528        <div class="ev-tech-val">One free revision — all changes documented</div>
14529      </div>
14530      <div class="ev-tech-item">
14531        <div class="ev-tech-label">Turnaround — single / EP</div>
14532        <div class="ev-tech-val">5–7 business days (rush: 2–3 days)</div>
14533      </div>
14534    </div>
14535  </div>
14536</section>
14537
14538<section id="faq" aria-labelledby="faq-heading">
14539  <div class="ev-section-inner">
14540    <div class="ev-eyebrow">Questions</div>
14541    <h2 id="faq-heading">How mastering works</h2>
14542    <p class="ev-section-body">Everything you need to know before submitting your project.</p>
14543    <div class="ev-faq-list" role="list">
14544      <details class="ev-faq-item" role="listitem">
14545        <summary class="ev-faq-q">What format should I submit my mix in?</summary>
14546        <div class="ev-faq-a">Submit your final stereo mix as a 24-bit WAV or AIFF file at your session's native sample rate (44.1 kHz or 48 kHz minimum). Leave 3–6 dB of headroom — do not apply a limiter to your master bus before sending. The more headroom you give us, the more precision we have in the mastering stage.</div>
14547      </details>
14548      <details class="ev-faq-item" role="listitem">
14549        <summary class="ev-faq-q">Do I need stem mastering or stereo mastering?</summary>
14550        <div class="ev-faq-a">Stereo mastering works well for most projects where you're satisfied with the overall mix balance. Stem mastering is the better choice when you want more control over the relationship between elements — for example, adjusting the low end or the vocal level relative to the rest of the mix during mastering, without going back into the full mix.</div>
14551      </details>
14552      <details class="ev-faq-item" role="listitem">
14553        <summary class="ev-faq-q">How long does mastering take?</summary>
14554        <div class="ev-faq-a">Standard turnaround is 5–7 business days for a single or EP. Full album projects take 7–10 business days. Rush turnaround (2–3 business days) is available for a surcharge — contact us before submitting to confirm availability.</div>
14555      </details>
14556      <details class="ev-faq-item" role="listitem">
14557        <summary class="ev-faq-q">
14557What loudness levels do you target?</summary>
14558        <div class="ev-faq-a">We target platform-appropriate loudness: −14 LUFS integrated for Spotify, −16 LUFS for Apple Music, −13 to −14 LUFS for YouTube, and −14 LUFS for Tidal. We'll discuss your primary platform and delivery preferences during the intake process, and you'll receive versions optimized for your specific needs.</div>
14559      </details>
14560      <details class="ev-faq-item" role="listitem">
14561        <summary class="ev-faq-q">Do you work with artists outside the EchoVira network?</summary>
14562        <div class="ev-faq-a">Yes. EchoVira Mastering is open to any artist, regardless of label or network affiliation. You do not need to be part of the EchoVira label network to access mastering services.</div>
14563      </details>
14564      <details class="ev-faq-item" role="listitem">
14565        <summary class="ev-faq-q">What is your revision policy?</summary>
14566        <div class="ev-faq-a">One free revision is included with every mastering project. We address your notes specifically and document every change made. Additional revisions beyond the first are available at a flat fee disclosed during the project intake.</div>
14567      </details>
14568    </div>
14569  </div>
14570</section>
14571
14572<section class="ev-muted" aria-labelledby="network-heading">
14573  <div class="ev-section-inner">
14574    <div class="ev-eyebrow">EchoVira Network</div>
14575    <h2 id="network-heading">Part of a global music ecosystem</h2>
14576    <p class="ev-section-body">
14577      EchoVira Mastering is one part of the EchoVira creative network — 12 cultural music labels spanning
14578      Persian, Korean, Arabic, Latin, Chinese, French, Turkish, South Asian, Slavic, Portuguese, and instrumental music,
14579      plus music video production.
14580    </p>
14581    <div class="ev-network-row">
14582      <a href="https://echovira.com" class="ev-network-pill">🎵 EchoVira Hub</a>
14583      <a href="https://musicvideo.echovira.com" class="ev-network-pill">🎬 Music Video Production</a>
14584      <a href="https://hich.echovira.com" class="ev-network-pill">Hich — Persian</a>
14585      <a href="https://pulseborn.echovira.com" class="ev-network-pill">Pulseborn — American</a>
14586      <a href="https://byeolbit.echovira.com" class="ev-network-pill">Byeolbit — Korean</a>
14587      <a href="https://amanecer.echovira.com" class="ev-network-pill">Amanecer — Latin</a>
14588      <a href="https://bahira.echovira.com" class="ev-network-pill">Bahira — Arabic</a>
14589      <a href="https://syahi.echovira.com" class="ev-network-pill">Syahi — South Asian</a>
14590      <a href="https://luoxi.echovira.com" class="ev-network-pill">Luoxi — Chinese</a>
14591    </div>
14592  </div>
14593</section>
14594
14595<section class="ev-cta-band" aria-labelledby="cta-heading">
14596  <div class="ev-eyebrow" style="justify-content:center">Ready to master?</div>
14597  <h2 id="cta-heading">Submit your project.</h2>
14598  <p>Professional mastering that serves your music. Transparent process, precise delivery, streaming-ready results — for independent artists and labels worldwide.</p>
14599  <div class="ev-cta-row-center">
14600    <a href="/contact" class="ev-btn ev-btn-primary">Submit a project</a>
14601    <a href="/contact" class="ev-btn ev-btn-ghost">View pricing</a>
14602  </div>
14603</section>
14604
14605<footer class="ev-footer" role="contentinfo">
14606  <div class="ev-footer-inner">
14607    <div>
14608      <a href="https://echovira.com" class="ev-logo" style="margin-bottom:0.5rem">
14609        <div class="ev-logo-mark"><span></span><span></span><span></span><span></span></div>
14610        <span class="ev-logo-text">
14610EchoVira <span class="ev-logo-label">Mastering</span></span>
14611      </a>
14612      <div class="ev-copyright" style="margin-top:0.5rem">\xa9 ${new Date().getFullYear()} EchoVira. All rights reserved.</div>
14613    </div>
14614    <nav class="ev-footer-links" aria-label="Footer navigation">
14615      <a href="https://echovira.com">EchoVira Home</a>
14616      <a href="https://musicvideo.echovira.com">Music Video</a>
14617      <a href="https://echovira.com/social">Social Links</a>
14618      <a href="https://gallery.echovira.com">Store</a>
14619      <a href="/contact">Submit</a>
14620    </nav>
14621  </div>
14622</footer>
14623
14624<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
14625  <nav aria-label="Site pages">
14626    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
14627    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
14628    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
14629    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
14630  </nav>
14631  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
14632</footer>
14633`;e.s(["MasteringEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{if(!e.current)return;e.current.querySelectorAll("script").forEach(e=>{let a=document.createElement("script");Array.from(e.attributes).forEach(e=>a.setAttribute(e.name,e.value)),a.textContent=e.textContent,e.parentNode?.replaceChild(a,e)});let a=(0,t.injectFluidCanvas)(e.current,"#6030c0","#0d0010",.28);return()=>a()},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(o)}}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},900053,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n=`
14634    <link rel="preconnect" href="https://fonts.googleapis.com">
14635    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
14636    <link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;700;900&family=Cormorant+Garamond:wght@400;700&display=swap" rel="stylesheet">
14637    <style>
14638        .entry-title, .post-edit-link, .site-footer, .site-info, .site-header, .site-branding, header.header, .masthead, .page-title {
14639            display: none !important;
14640        }
14641
14642        .vc_row[data-vc-full-width], .wpb_column, .vc_column_container, .wpb_wrapper, .entry-content, .site-content-contain, #content, .site-content, .site, #page, main {
14643            width: 100% !important;
14644            max-width: 100% !important;
14645            padding: 0 !important;
14646            margin: 0 !important;
14647            margin-top: 0 !important;
14648            padding-top: 0 !important;
14649        }
14650
14651        :root {
14652            --ev-bg: #fafafa;
14653            --ev-fg: #2c2c2c;
14654            --primary-color: #1a1a1a;
14655            --miroir-blue: #0055A4;
14656            --miroir-white: #ffffff;
14657            --miroir-red: #EF4135;
14658            --white: #ffffff;
14659            --light-gray: #f5f5f5;
14660            --text-light: #ffffff;
14661            --text-dark: #2c2c2c;
14662            --background-dark: #0a0a0a;
14663            --background-light: #fafafa;
14664            --gradient-main: linear-gradient(135deg, #0055A4 0%, #EF4135 100%);
14665            --shadow-light: 0 2px 20px rgba(0,0,0,0.1);
14666            --shadow-heavy: 0 10px 40px rgba(0,0,0,0.2);
14667            --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
14668        }
14669
14670        * {
14671            margin: 0;
14672            padding: 0;
14673            box-sizing: border-box;
14674        }
14675
14676        body {
14677            font-family: 'Raleway', -apple-system, sans-serif;
14678            line-height: 1.8;
14679            color: var(--ev-fg);
14680            background: var(--ev-bg);
14681            overflow-x: hidden;
14682            margin: 0 !important;
14683            padding: 0 !important;
14684        }
14685
14686        body:not(.lang-fr) .lang-fr { display: none !important; }
14687        body:not(.lang-en) .lang-en { display: none !important; }
14688
14689        .lang-toggle {
14690            position: absolute;
14691            top: 20px;
14692            right: 20px;
14693            z-index: 1001;
14694            background: rgba(255,255,255,0.2);
14695            border-radius: 25px;
14696            padding: 8px;
14697            backdrop-filter: blur(10px);
14698        }
14699
14700        .lang-toggle button {
14701            background: transparent;
14702            border: none;
14703            padding: 8px 16px;
14704            cursor: pointer;
14705            font-weight: 700;
14706            border-radius: 20px;
14707            transition: var(--transition);
14708            font-size: 0.9rem;
14709            color: white;
14710        }
14711
14712        .lang-toggle button.active {
14713            background: var(--miroir-red);
14714            /* white on --miroir-red (#EF4135) is 3.82:1, below AA's 4.5:1
14715               at this button's size (0.9rem, not large enough to qualify
14716               for the relaxed 3:1 threshold even at font-weight 700) */
14717            color: #000;
14718        }
14719
14720        .main-nav {
14721            position: fixed;
14722            top: 0;
14723            left: 0;
14724            right: 0;
14725            background: rgba(10, 10, 10, 0.95);
14726            backdrop-filter: blur(20px);
14727            z-index: 1000;
14728            padding: 1rem 0;
14729            border-bottom: 1px solid rgba(0, 85, 164, 0.3);
14730        }
14731
14732        .nav-container {
14733            max-width: 1200px;
14734            margin: 0 auto;
14735            padding: 0 20px;
14736            padding-right: 210px;
14737            display: flex;
14738            justify-content: space-between;
14739            align-items: center;
14740        }
14741
14742        .logo img { height: 50px; }
14743
14744        .nav-menu {
14745            display: flex;
14746            list-style: none;
14747            gap: 2rem;
14748        }
14749
14750        .nav-menu a {
14751            color: var(--text-light);
14752            text-decoration: none;
14753            font-weight: 700;
14754            transition: var(--transition);
14755        }
14756
14757        /* --miroir-blue (#0055A4) on the dark nav bg is 2.44:1, below AA's
14758           4.5:1 -- lightened for this specific dark-bg hover context
14759           (--miroir-blue itself is fine as used elsewhere, e.g. on white). */
14760        .nav-menu a:hover { color: #4785bd; }
14761
14762        .mobile-menu-toggle {
14763            display: none;
14764            background: none;
14765            border: none;
14766            color: var(--text-light);
14767            font-size: 1.5rem;
14768            cursor: pointer;
14769        }
14770
14771        .hero-section {
14772            min-height: 100vh;
14773            /* Worst-case gradient stop (#EF4135 red) blended with the 45%
14774               black ::after scrim below — the real effective background
14775               white hero text renders against. Testing convention: the ADA
14776               crawler can't see gradients (only background-color), so it
14777               falls through to a near-white default and reports
14778               white-on-white unless a solid stand-in is declared here. */
14779            --ada-contrast-bg: #83241d;
14780            background: var(--gradient-main);
14781            display: flex;
14782            align-items: center;
14783            justify-content: center;
14784            text-align: center;
14785            color: var(--text-light);
14786            position: relative;
14787            overflow: hidden;
14788        }
14789
14790        .hero-section::after {
14791            /* White hero text on the gradient's lighter (red) stop is
14792               only 3.82:1 -- passes for the large bold title but not the
14793               smaller, non-bold subtitle needing the full 4.5:1. This
14794               scrim brings it to ~9:1 without flattening the brand
14795               gradient into a solid color. */
14796            content: '';
14797            position: absolute;
14798            inset: 0;
14799            background: rgba(0, 0, 0, 0.45);
14800            z-index: 1;
14801        }
14802
14803        .hero-section::before {
14804            content: '';
14805            position: absolute;
14806            top: 0;
14807            left: 0;
14808            right: 0;
14809            bottom: 0;
14810            background: radial-gradient(circle at 50% 0%, rgba(255,255,255,0.1) 0%, transparent 50%);
14811        }
14812
14813        .hero-content {
14814            position: relative;
14815            z-index: 2;
14816            max-width: 900px;
14817            padding: 0 20px;
14818        }
14819
14820        .hero-title {
14821            font-family: 'Cormorant Garamond', serif;
14822            font-size: clamp(3rem, 8vw, 6rem);
14823            margin-bottom: 1rem;
14824            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
14825            font-weight: 700;
14826            letter-spacing: 4px;
14827        }
14828
14829        .hero-subtitle {
14830            font-size: clamp(1rem, 2vw, 1.3rem);
14831            margin-bottom: 2rem;
14832            opacity: 0.9;
14833            line-height: 1.6;
14834        }
14835
14836        .cta-button {
14837            display: inline-block;
14838            padding: 18px 40px;
14839            background: white;
14840            color: var(--miroir-blue);
14841            text-decoration: none;
14842            border-radius: 50px;
14843            font-weight: 700;
14844            font-size: 1.1rem;
14845            transition: var(--transition);
14846            box-shadow: var(--shadow-light);
14847        }
14848
14849        .cta-button:hover {
14850            transform: translateY(-3px);
14851            box-shadow: var(--shadow-heavy);
14852            background: var(--miroir-red);
14853            color: white;
14854        }
14855
14856        .section {
14857            padding: 80px 0;
14858        }
14859
14860        .section-dark {
14861            background: var(--background-dark);
14862            color: var(--text-light);
14863        }
14864
14865        .container {
14866            max-width: 1200px;
14867            margin: 0 auto;
14868            padding: 0 20px;
14869        }
14870
14871        .section-title {
14872            text-align: center;
14873            font-size: 2.5rem;
14874            margin-bottom: 3rem;
14875            position: relative;
14876            font-family: 'Cormorant Garamond', serif;
14877            font-weight: 700;
14878            letter-spacing: 2px;
14879        }
14880
14881        .section-title::after {
14882            content: '';
14883            position: absolute;
14884            bottom: -10px;
14885            left: 50%;
14886            transform: translateX(-50%);
14887            width: 80px;
14888            height: 3px;
14889            background: var(--miroir-blue);
14890            border-radius: 2px;
14891        }
14892
14893        .about-content {
14894            max-width: 900px;
14895            margin: 0 auto;
14896            text-align: center;
14897            line-height: 2;
14898            font-size: 1.1rem;
14899        }
14900
14901        .about-content p {
14902            margin-bottom: 1.5rem;
14903        }
14904
14905        .artists-gallery {
14906            display: grid;
14907            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
14908            gap: 2.5rem;
14909            margin-top: 3rem;
14910        }
14911
14912        .artist-card {
14913            position: relative;
14914            cursor: pointer;
14915            transition: var(--transition);
14916            background: white;
14917            border-radius: 20px;
14918            overflow: hidden;
14919            box-shadow: var(--shadow-light);
14920            border: 2px solid transparent;
14921        }
14922
14923        .artist-card:hover {
14924            transform: translateY(-10px) scale(1.02);
14925            box-shadow: var(--shadow-heavy);
14926            border-color: var(--miroir-red);
14927        }
14928
14929        .artist-image-wrapper {
14930            position: relative;
14931            width: 100%;
14932            aspect-ratio: 1;
14933            overflow: hidden;
14934        }
14935
14936        .artist-image {
14937            width: 100%;
14938            height: 100%;
14939            object-fit: cover;
14940            transition: transform 0.5s ease;
14941        }
14942
14943        .artist-card:hover .artist-image {
14944            transform: scale(1.1);
14945        }
14946
14947        .artist-overlay {
14948            position: absolute;
14949            bottom: 0;
14950            left: 0;
14951            right: 0;
14952            background: linear-gradient(to top, rgba(0,0,0,0.9), transparent);
14953            padding: 2rem 1.5rem 1.5rem;
14954            color: white;
14955        }
14956
14957        .artist-stage-name {
14958            font-size: 1.5rem;
14959            font-weight: 900;
14960            margin-bottom: 0.3rem;
14961        }
14962
14963        .artist-role-badge {
14964            display: inline-block;
14965            background: var(--miroir-blue);
14966            padding: 4px 12px;
14967            border-radius: 15px;
14968            font-size: 0.75rem;
14969            font-weight: 700;
14970            text-transform: uppercase;
14971            letter-spacing: 0.5px;
14972        }
14973
14974        .artist-real-name {
14975            font-size: 0.9rem;
14976            opacity: 0.8;
14977            margin-top: 0.5rem;
14978        }
14979
14980        .releases-grid, .videos-grid, .news-grid {
14981            display: grid;
14982            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
14983            gap: 2rem;
14984            margin-top: 3rem;
14985        }
14986
14987        .release-card, .video-card, .news-card {
14988            background: white;
14989            border-radius: 20px;
14990            overflow: hidden;
14991            box-shadow: var(--shadow-light);
14992            transition: var(--transition);
14993            border: 2px solid transparent;
14994        }
14995
14996        .section-dark .release-card,
14997        .section-dark .video-card,
14998        .section-dark .news-card {
14999            background: rgba(255,255,255,0.05);
15000            border-color: rgba(255,255,255,0.1);
15001        }
15002
15003        .release-card:hover, .video-card:hover, .news-card:hover {
15004            transform: translateY(-10px);
15005            box-shadow: var(--shadow-heavy);
15006            border-color: var(--miroir-red);
15007        }
15008
15009        .release-image, .video-embed, .news-image {
15010            position: relative;
15011            overflow: hidden;
15012            background: var(--gradient-main);
15013            display: flex;
15014            align-items: center;
15015            justify-content: center;
15016            color: white;
15017            font-size: 4rem;
15018        }
15019
15020        .release-image { 
15021            aspect-ratio: 1;
15022            position: relative;
15023        }
15024        
15025        .release-image img,
15026        .news-image img {
15027            width: 100%;
15028            height: 100%;
15029            object-fit: cover;
15030        }
15031
15032        .video-embed { 
15033            padding-bottom: 56.25%; 
15034            height: 0;
15035            position: relative;
15036        }
15037
15038        .video-embed iframe {
15039            position: absolute;
15040            top: 0;
15041            left: 0;
15042            width: 100%;
15043            height: 100%;
15044        }
15045
15046        .news-image { height: 200px; }
15047
15048        .release-info, .video-info, .news-content {
15049            padding: 1.5rem;
15050        }
15051
15052        .section-dark .release-info,
15053        .section-dark .video-info,
15054        .section-dark .news-content {
15055            color: var(--text-light);
15056        }
15057
15058        .release-title, .video-title, .news-title {
15059            font-size: 1.3rem;
15060            margin-bottom: 0.5rem;
15061            font-weight: 700;
15062            color: var(--text-dark);
15063        }
15064
15065        .section-dark .release-title,
15066        .section-dark .video-title,
15067        .section-dark .news-title {
15068            color: var(--text-light);
15069        }
15070
15071        .release-description, .news-excerpt {
15072            font-size: 0.95rem;
15073            color: #666;
15074            margin-bottom: 1rem;
15075            line-height: 1.6;
15076        }
15077
15078        .section-dark .release-description,
15079        .section-dark .news-excerpt {
15080            color: rgba(255,255,255,0.8);
15081        }
15082
15083        .streaming-links {
15084            display: flex;
15085            gap: 0.5rem;
15086            flex-wrap: wrap;
15087        }
15088
15089        .streaming-link {
15090            padding: 8px 15px;
15091            background: var(--miroir-blue);
15092            color: white;
15093            text-decoration: none;
15094            border-radius: 20px;
15095            font-size: 0.8rem;
15096            font-weight: 700;
15097            transition: var(--transition);
15098            display: inline-block;
15099        }
15100
15101        .streaming-link:hover {
15102            background: var(--miroir-red);
15103            transform: translateY(-2px);
15104        }
15105
15106        .video-link, .read-more {
15107            display: inline-block;
15108            margin-top: 1rem;
15109            color: var(--miroir-blue);
15110            text-decoration: none;
15111            font-weight: 700;
15112            transition: var(--transition);
15113        }
15114
15115        .section-dark .video-link,
15116        .section-dark .read-more {
15117            color:
15117 var(--miroir-red);
15118        }
15119
15120        .video-link:hover, .read-more:hover {
15121            color: var(--miroir-red);
15122        }
15123
15124        .view-all-btn {
15125            text-align: center;
15126            margin-top: 3rem;
15127        }
15128
15129        .view-all-btn a {
15130            display: inline-block;
15131            padding: 15px 35px;
15132            background: var(--miroir-blue);
15133            color: white;
15134            text-decoration: none;
15135            border-radius: 30px;
15136            font-weight: 700;
15137            transition: var(--transition);
15138        }
15139
15140        .view-all-btn a:hover {
15141            background: var(--miroir-red);
15142            transform: translateY(-3px);
15143        }
15144
15145        .loading-message {
15146            grid-column: 1 / -1;
15147            text-align: center;
15148            padding: 3rem;
15149            font-size: 1.2rem;
15150            color: #999;
15151        }
15152
15153        .bio-page {
15154            display: none;
15155            min-height: 100vh;
15156            padding-top: 80px;
15157            background: var(--background-light);
15158        }
15159
15160        .bio-page.active {
15161            display: block;
15162        }
15163
15164        .bio-header {
15165            background: var(--gradient-main);
15166            padding: 3rem 0;
15167            color: white;
15168            text-align: center;
15169        }
15170
15171        .back-button {
15172            display: inline-block;
15173            padding: 10px 25px;
15174            background: rgba(255,255,255,0.2);
15175            color: white;
15176            text-decoration: none;
15177            border-radius: 25px;
15178            margin-bottom: 1rem;
15179            transition: var(--transition);
15180            font-weight: 700;
15181        }
15182
15183        .back-button:hover {
15184            background: rgba(255,255,255,0.3);
15185            transform: translateY(-2px);
15186        }
15187
15188        .bio-content {
15189            max-width: 1000px;
15190            margin: -50px auto 0;
15191            position: relative;
15192            z-index: 10;
15193            padding: 0 20px 60px;
15194        }
15195
15196        .bio-card {
15197            background: white;
15198            border-radius: 20px;
15199            overflow: hidden;
15200            box-shadow: var(--shadow-heavy);
15201        }
15202
15203        .bio-image-section {
15204            padding: 3rem;
15205            text-align: center;
15206            background: linear-gradient(135deg, #e6f2ff 0%, #ffe6e6 100%);
15207        }
15208
15209        .bio-artist-image {
15210            width: 280px;
15211            height: 280px;
15212            border-radius: 50%;
15213            object-fit: cover;
15214            border: 6px solid white;
15215            box-shadow: var(--shadow-light);
15216        }
15217
15218        .bio-text-section {
15219            padding: 3rem;
15220        }
15221
15222        .bio-artist-title {
15223            text-align: center;
15224            margin-bottom: 2.5rem;
15225            padding-bottom: 2rem;
15226            border-bottom: 2px solid #f0f0f0;
15227        }
15228
15229        .bio-artist-title h1 {
15230            font-size: 2.8rem;
15231            margin-bottom: 0.8rem;
15232            font-family: 'Cormorant Garamond', serif;
15233            color: var(--text-dark);
15234            font-weight: 700;
15235            letter-spacing: 2px;
15236        }
15237
15238        .bio-artist-title .stage-name {
15239            font-size: 1.4rem;
15240            color: var(--miroir-blue);
15241            font-weight: 700;
15242            margin-bottom: 1rem;
15243        }
15244
15245        .bio-artist-title .role {
15246            display: inline-block;
15247            background: var(--miroir-red);
15248            color: white;
15249            padding: 10px 25px;
15250            border-radius: 25px;
15251            font-size: 1rem;
15252            font-weight: 700;
15253        }
15254
15255        .bio-description {
15256            line-height: 2;
15257            font-size: 1.1rem;
15258            color: var(--text-dark);
15259        }
15260
15261        .bio-description p {
15262            margin-bottom: 1.5rem;
15263            text-align: justify;
15264        }
15265
15266        .main-footer {
15267            background: var(--primary-color);
15268            color: var(--text-light);
15269            padding: 3rem 0 1rem;
15270            text-align: center;
15271        }
15272
15273        .social-links {
15274            display: flex;
15275            justify-content: center;
15276            gap: 1rem;
15277            margin-bottom: 2rem;
15278        }
15279
15280        .social-link {
15281            width: 50px;
15282            height: 50px;
15283            border-radius: 50%;
15284            background: var(--miroir-blue);
15285            color: var(--text-light);
15286            display: flex;
15287            align-items: center;
15288            justify-content: center;
15289            text-decoration: none;
15290            font-size: 1.2rem;
15291            transition: var(--transition);
15292        }
15293
15294        .social-link:hover {
15295            background: var(--miroir-red);
15296            transform: translateY(-3px);
15297        }
15298
15299        @media (max-width: 768px) {
15300            .mobile-menu-toggle { display: block; }
15301            .nav-container { padding-right: 170px; }
15302            .lang-toggle { padding: 5px; }
15303            .lang-toggle button { padding: 6px 10px; font-size: 0.75rem; }
15304            .nav-menu {
15305                position: fixed;
15306                top: 70px;
15307                left: 0;
15308                right: 0;
15309                background: var(--primary-color);
15310                flex-direction: column;
15311                padding: 2rem;
15312                transform: translateY(-100%);
15313                opacity: 0;
15314                visibility: hidden;
15315                transition: var(--transition);
15316            }
15317            .nav-menu.active {
15318                transform: translateY(0);
15319                opacity: 1;
15320                visibility: visible;
15321            }
15322            .artists-gallery {
15323                grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
15324                gap: 1.5rem;
15325            }
15326            .releases-grid, .videos-grid, .news-grid {
15327                grid-template-columns: 1fr;
15328            }
15329            .bio-artist-image {
15330                width: 200px;
15331                height: 200px;
15332            }
15333            .bio-artist-title h1 {
15334                font-size: 2rem;
15335            }
15336            .bio-text-section {
15337                padding: 2rem 1.5rem;
15338            }
15339        }
15340    
15341    .ev-nw-badge{position:fixed;bottom:72px;right:20px;z-index:9999;display:inline-flex;align-items:center;gap:5px;padding:8px 14px;background:rgba(2,2,8,.9);border:1px solid rgba(255,255,255,.14);border-radius:100px;font-size:.68rem;font-weight:600;color:rgba(255,255,255,.55);text-decoration:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);letter-spacing:.06em;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}
15342.ev-nw-badge:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(2,2,8,.97)}
15343.ev-nw-badge-mark{width:14px;
15343height:14px;display:grid;grid-template-columns:1fr 1fr;gap:2px;flex-shrink:0}
15344.ev-nw-badge-mark span{background:currentColor;border-radius:2px;display:block}
15345  </style>
15346
15347<a href="https://echovira.com" class="ev-nw-badge" target="_blank" rel="noopener" title="EchoVira Music Network">
15348  <div class="ev-nw-badge-mark"><span></span><span></span><span></span><span></span></div>
15349  EchoVira
15350</a>
15351
15352<nav class="main-nav" id="mainNav">
15353    <div class="nav-container">
15354        <a href="#home" class="logo">
15355            <img src="https://media.echovira.com/echovira/miroir_logo.png" alt="Miroir"
15356                srcset="https://media.echovira.com/echovira/miroir_logo-400.webp 400w, https://media.echovira.com/echovira/miroir_logo-800.webp 800w, https://media.echovira.com/echovira/miroir_logo-full.webp 1024w"
15357                sizes="50px" width="1024" height="1024" decoding="async">
15358        </a>
15359        <ul class="nav-menu" id="navMenu">
15360            <li class="lang-fr"><a href="#home">Accueil</a></li>
15361            <li class="lang-fr"><a href="#about">\xc0 propos</a></li>
15362            <li class="lang-fr"><a href="#artists">Artistes</a></li>
15363            <li class="lang-fr"><a href="#releases">Sorties</a></li>
15364            <li class="lang-fr"><a href="#videos">Vid\xe9os</a></li>
15365            <li class="lang-fr"><a href="#news">Actualit\xe9s</a></li>
15366            <li class="lang-en"><a href="#home">Home</a></li>
15367            <li class="lang-en"><a href="#about">About</a></li>
15368            <li class="lang-en"><a href="#artists">Artists</a></li>
15369            <li class="lang-en"><a href="#releases">Releases</a></li>
15370            <li class="lang-en"><a href="#videos">Videos</a></li>
15371            <li class="lang-en"><a href="#news">News</a></li>
15372        </ul>
15373        <button class="mobile-menu-toggle" id="mobileToggle">☰</button>
15374    </div>
15375<div class="lang-toggle">
15376        <button onclick="window.setLanguage&&setLanguage('fr')" class="lang-btn-fr active" data-lang="fr">Fran\xe7ais</button>
15377        <button onclick="window.setLanguage&&setLanguage('en')" class="lang-btn-en" data-lang="en">English</button>
15378    </div>
15379</nav>
15380
15381<span id="main-content" tabindex="-1"></span>
15382
15383<section class="hero-section" id="home">
15384    
15385    
15386    <div class="hero-content">
15387        <h1 class="hero-title">MIROIR</h1>
15388        <p class="hero-subtitle lang-fr">Groupe Fran\xe7ais | Indie Rock & \xc9lectro-Pop | 12 Artistes Talentueux | Production Internationale</p>
15389        <p class="hero-subtitle lang-en">French Band | Indie Rock & Electro-Pop | 12 Talented Artists | International Production</p>
15390        <a href="#about" class="cta-button lang-fr">D\xe9couvrez Notre Musique</a>
15391        <a href="#about" class="cta-button lang-en">Discover Our Music</a>
15392    </div>
15393</section>
15394
15395<section class="section" id="about">
15396    <div class="container">
15397        <h2 class="section-title lang-fr">\xc0 Propos de Miroir</h2>
15398        <h2 class="section-title lang-en">About Miroir</h2>
15399        <div class="about-content">
15400            <p class="lang-fr">
15401                <strong>Miroir</strong> — plus qu'un groupe, Miroir repr\xe9sente une nouvelle vague de la <strong>musique fran\xe7aise contemporaine</strong>. Nous fusionnons parfaitement les <strong>m\xe9lodies indie rock</strong> et les <strong>\xe9l\xe9ments de la chanson fran\xe7aise</strong> avec de la <strong>musique \xe9lectronique</strong> moderne, du <strong>rock alternatif</strong> et des <strong>sons exp\xe9rimentaux</strong> pour cr\xe9er un son unique qui transcende les fronti\xe8res culturelles et touche les cœurs.
15402            </p>
15403            <p class="lang-fr">
15404                Form\xe9 de 12 musiciens talentueux — <strong>chanteurs</strong>, <strong>multi-instrumentistes</strong>, <strong>compositeurs et paroliers</strong> — Miroir repr\xe9sente la diversit\xe9 et la cr\xe9ativit\xe9 de la <strong>musique fran\xe7aise</strong> contemporaine. Nous nous inspirons du <strong>rock indie</strong>, de l'<strong>\xe9lectro-pop</strong>, du <strong>jazz</strong>, de la <strong>soul</strong> et de la <strong>musique alternative</strong> pour produire des œuvres de <strong>qualit\xe9 mondiale</strong> avec une <strong>identit\xe9 fran\xe7aise authentique</strong>.
15405            </p>
15406            <p class="lang-fr">
15407                Des <strong>performances live</strong> et <strong>festivals de musique</strong> \xe0 Paris et dans toute la France \xe0 la sortie d'<strong>albums num\xe9riques</strong> et de <strong>singles</strong> sur toutes les plateformes de streaming (Spotify, Apple Music, YouTube Music), Miroir construit un h\xe9ritage musical qui honore le riche patrimoine musical de la France tout en embrassant l'innovation mondiale. Miroir signifie miroir — r\xe9flexion, \xe9l\xe9gance et v\xe9rit\xe9.
15408            </p>
15409            
15410            <p class="lang-en">
15411                <strong>Miroir</strong> — more than just a band, Miroir represents a new wave of <strong>contemporary French music</strong>. We perfectly blend <strong>indie rock melodies</strong> and <strong>French chanson elements</strong> with modern <strong>electronic music</strong>, <strong>alternative rock</strong>, and <strong>experimental sounds</strong> to create a unique sound that transcends cultural boundaries and touches hearts.
15412            </p>
15413            <p class="lang-en">
15414                Formed by 12 talented musicians — <strong>vocalists</strong>, <strong>multi-instrumentalists</strong>, <strong>composers and lyricists</strong> — Miroir represents the diversity and creativity of contemporary <strong>French music</strong>. We draw inspiration from <strong>indie rock</strong>, <strong>electro-pop</strong>, <strong>jazz</strong>, <strong>soul</strong>, and <strong>alternative music</strong> to produce works with <strong>world-class quality</strong> and <strong>authentic French identity</strong>.
15415            </p>
15416            <p class="lang-en">
15417                From <strong>live performances</strong> and <strong>music festivals</strong> in Paris and across France to releasing <strong>digital albums</strong> and <strong>singles</strong> on all streaming platforms (Spotify, Apple Music, YouTube Music), Miroir is building a musical legacy that honors France's rich musical heritage while embracing global innovation. Miroir means mirror — reflection, elegance, and truth.
15418            </p>
15419        </div>
15420    </div>
15421</section>
15422
15423<section class="section section-dark" id="artists">
15424    <div class="container">
15425        <h2 class="section-title lang-fr">Les Artistes</h2>
15426        <h2 class="section-title lang-en">The Artists</h2>
15427        <div class="artists-gallery" id="artistsGallery">
15428<div class="artist-card" data-artist-id="adrien-caron" style="cursor:pointer">
15429            <div class="artist-image-wrapper">
15430                <img src="https://media.echovira.com/miroir/miroir_adrien_caron_male_singer_portrait_1.png" alt="Adrien Caron" class="artist-image"
15431                srcset="https://media.echovira.com/miroir/miroir_adrien_caron_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_adrien_caron_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_adrien_caron_male_singer_portrait_1-full.
15431webp 1024w"
15432                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
15433                <div class="artist-overlay">
15434                    <div class="artist-stage-name">Adrien</div>
15435                    <div class="artist-role-badge lang-fr">Chanteur</div>
15436                    <div class="artist-role-badge lang-en">Male Singer</div>
15437                    <div class="artist-real-name">Adrien Caron • 27 ans / years</div>
15438                </div>
15439            </div>
15440        </div><div class="artist-card" data-artist-id="amelie-rousseau" style="cursor:pointer">
15441            <div class="artist-image-wrapper">
15442                <img src="https://media.echovira.com/miroir/miroir_amelie_rousseau_female_singer_portrait_1.png" alt="Amelie Rousseau" class="artist-image"
15443                srcset="https://media.echovira.com/miroir/miroir_amelie_rousseau_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_amelie_rousseau_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_amelie_rousseau_female_singer_portrait_1-full.webp 1024w"
15444                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
15445                <div class="artist-overlay">
15446                    <div class="artist-stage-name">Am\xe9lie</div>
15447                    <div class="artist-role-badge lang-fr">Chanteuse</div>
15448                    <div class="artist-role-badge lang-en">Female Singer</div>
15449                    <div class="artist-real-name">Amelie Rousseau • 24 ans / years</div>
15450                </div>
15451            </div>
15452        </div><div class="artist-card" data-artist-id="aurelie-martin" style="cursor:pointer">
15453            <div class="artist-image-wrapper">
15454                <img src="https://media.echovira.com/miroir/miroir_aurelie_martin_multi_instrumentalist_portrait_0.png" alt="Aurelie Martin" class="artist-image"
15455                srcset="https://media.echovira.com/miroir/miroir_aurelie_martin_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/miroir/miroir_aurelie_martin_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/miroir/miroir_aurelie_martin_multi_instrumentalist_portrait_0-full.webp 1024w"
15456                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
15457                <div class="artist-overlay">
15458                    <div class="artist-stage-name">Aur\xe9lie</div>
15459                    <div class="artist-role-badge lang-fr">Multi-instrumentiste</div>
15460                    <div class="artist-role-badge lang-en">Multi-Instrumentalist</div>
15461                    <div class="artist-real-name">Aurelie Martin • 25 ans / years</div>
15462                </div>
15463            </div>
15464        </div><div class="artist-card" data-artist-id="camille-durand" style="cursor:pointer">
15465            <div class="artist-image-wrapper">
15466                <img src="https://media.echovira.com/miroir/miroir_camille_durand_female_singer_portrait_0.png" alt="Camille Durand" class="artist-image"
15467                srcset="https://media.echovira.com/miroir/miroir_camille_durand_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/miroir/miroir_camille_durand_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/miroir/miroir_camille_durand_female_singer_portrait_0-full.webp 1024w"
15468                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
15469                <div class="artist-overlay">
15470                    <div class="artist-stage-name">Camille</div>
15471                    <div class="artist-role-badge lang-fr">Chanteuse</div>
15472                    <div class="artist-role-badge lang-en">Female Singer</div>
15473                    <div class="artist-real-name">Camille Durand • 25 ans / years</div>
15474                </div>
15475            </div>
15476        </div><div class="artist-card" data-artist-id="claire-lefevre" style="cursor:pointer">
15477            <div class="artist-image-wrapper">
15478                <img src="https://media.echovira.com/miroir/miroir_claire_lefevre_female_singer_portrait_0.png" alt="Claire Lefevre" 
15478class="artist-image"
15479                srcset="https://media.echovira.com/miroir/miroir_claire_lefevre_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/miroir/miroir_claire_lefevre_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/miroir/miroir_claire_lefevre_female_singer_portrait_0-full.webp 1024w"
15480                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
15481                <div class="artist-overlay">
15482                    <div class="artist-stage-name">Claire</div>
15483                    <div class="artist-role-badge lang-fr">Chanteuse</div>
15484                    <div class="artist-role-badge lang-en">Female Singer</div>
15485                    <div class="artist-real-name">Claire Lefevre • 27 ans / years</div>
15486                </div>
15487            </div>
15488        </div><div class="artist-card" data-artist-id="elise-bernard" style="cursor:pointer">
15489            <div class="artist-image-wrapper">
15490                <img src="https://media.echovira.com/miroir/miroir_elise_bernard_female_singer_portrait_0.png" alt="Elise Bernard" class="artist-image"
15491                srcset="https://media.echovira.com/miroir/miroir_elise_bernard_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/miroir/miroir_elise_bernard_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/miroir/miroir_elise_bernard_female_singer_portrait_0-full.webp 1024w"
15492                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
15493                <div class="artist-overlay">
15494                    <div class="artist-stage-name">\xc9lise</div>
15495                    <div class="artist-role-badge lang-fr">Chanteuse</div>
15496                    <div class="artist-role-badge lang-en">Female Singer</div>
15497                    <div class="artist-real-name">Elise Bernard • 26 ans / years</div>
15498                </div>
15499            </div>
15500        </div><div class="artist-card" data-artist-id="isabelle-marchand" style="cursor:pointer">
15501            <div class="artist-image-wrapper">
15502                <img src="https://media.echovira.com/miroir/miroir_isabelle_marchand_composer_lyricist_portrait_0.png" alt="Isabelle Marchand" class="artist-image"
15503                srcset="https://media.echovira.com/miroir/miroir_isabelle_marchand_composer_lyricist_portrait_0-400.webp 400w, https://media.echovira.com/miroir/miroir_isabelle_marchand_composer_lyricist_portrait_0-800.webp 800w, https://media.echovira.com/miroir/miroir_isabelle_marchand_composer_lyricist_portrait_0-full.webp 1024w"
15504                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
15505                <div class="artist-overlay">
15506                    <div class="artist-stage-name">Isabelle</div>
15507                    <div class="artist-role-badge lang-fr">Compositrice & Paroli\xe8re</div>
15508                    <div class="artist-role-badge lang-en">Composer & Lyricist</div>
15509                    <div class="artist-real-name">Isabelle Marchand • 26 ans / years</div>
15510                </div>
15511            </div>
15512        </div><div class="artist-card" data-artist-id="julien-moreau" style="cursor:pointer">
15513            <div class="artist-image-wrapper">
15514                <img src="https://media.echovira.com/miroir/miroir_julien_moreau_male_singer_portrait_1.png" alt="Julien Moreau" class="artist-image"
15515                srcset="https://media.echovira.com/miroir/miroir_julien_moreau_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_julien_moreau_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_julien_moreau_male_singer_portrait_1-full.webp 1024w"
15516                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
15517                <div class="artist-overlay">
15518                    <div class="artist-stage-name">Julien</div>
15519                    <div class="artist-role-badge lang-fr">Chanteur</div>
15520                    <div class="artist-role-badge lang-en">Male Singer</div>
15521                    <div class="artist-real-name">Julien Moreau • 25 ans / years</div>
15522                </div>
15523            </div>
15524        </div><div class="artist-card" data-artist-id="leo-fontaine" style="cursor:pointer">
15525            <div class="artist-image-wrapper">
15526                <img src="https://media.echovira.com/miroir/miroir_leo_fontaine_male_singer_portrait_1.png" alt="Leo Fontaine" class="artist-image"
15527                srcset="https://media.echovira.com/miroir/miroir_leo_fontaine_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_leo_fontaine_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_leo_fontaine_male_singer_portrait_1-full.
15527webp 1024w"
15528                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
15529                <div class="artist-overlay">
15530                    <div class="artist-stage-name">L\xe9o</div>
15531                    <div class="artist-role-badge lang-fr">Chanteur</div>
15532                    <div class="artist-role-badge lang-en">Male Singer</div>
15533                    <div class="artist-real-name">Leo Fontaine • 26 ans / years</div>
15534                </div>
15535            </div>
15536        </div><div class="artist-card" data-artist-id="mathis-dubois" style="cursor:pointer">
15537            <div class="artist-image-wrapper">
15538                <img src="https://media.echovira.com/miroir/miroir_mathis_dubois_male_singer_portrait_1.png" alt="Mathis Dubois" class="artist-image"
15539                srcset="https://media.echovira.com/miroir/miroir_mathis_dubois_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_mathis_dubois_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_mathis_dubois_male_singer_portrait_1-full.webp 1024w"
15540                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
15541                <div class="artist-overlay">
15542                    <div class="artist-stage-name">Mathis</div>
15543                    <div class="artist-role-badge lang-fr">Chanteur</div>
15544                    <div class="artist-role-badge lang-en">Male Singer</div>
15545                    <div class="artist-real-name">Mathis Dubois • 24 ans / years</div>
15546                </div>
15547            </div>
15548        </div><div class="artist-card" data-artist-id="nicolas-laurent" style="cursor:pointer">
15549            <div class="artist-image-wrapper">
15550                <img src="https://media.echovira.com/miroir/miroir_nicolas_laurent_male_singer_portrait_1.png" alt="Nicolas Laurent" class="artist-image"
15551                srcset="https://media.echovira.com/miroir/miroir_nicolas_laurent_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_nicolas_laurent_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_nicolas_laurent_male_singer_portrait_1-full.webp 1024w"
15552                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
15553                <div class="artist-overlay">
15554                    <div class="artist-stage-name">Nico</div>
15555                    <div class="artist-role-badge lang-fr">Chanteur</div>
15556                    <div class="artist-role-badge lang-en">Male Singer</div>
15557                    <div class="artist-real-name">Nicolas Laurent • 23 ans / years</div>
15558                </div>
15559            </div>
15560        </div><div class="artist-card" data-artist-id="sophie-garnier" style="cursor:pointer">
15561            <div class="artist-image-wrapper">
15562                <img src="https://media.echovira.com/miroir/miroir_sophie_garnier_female_singer_portrait_1.png" alt="Sophie Garnier" class="artist-image"
15563                srcset="https://media.echovira.com/miroir/miroir_sophie_garnier_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_sophie_garnier_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_sophie_garnier_female_singer_portrait_1-full.webp 1024w"
15564                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
15565                <div class="artist-overlay">
15566                    <div class="artist-stage-name">Sophie</div>
15567                    <div class="artist-role-badge lang-fr">Chanteuse</div>
15568                    <div class="artist-role-badge lang-en">Female Singer</div>
15569                    <div class="artist-real-name">Sophie Garnier • 23 ans / years</div>
15570                </div>
15571            </div>
15572        </div>
15573</div>
15574    </div>
15575</section>
15576
15577<section class="section" id="releases">
15578    <div class="container">
15579        <h2 class="section-title lang-fr">Derni\xe8res Sorties</h2>
15580        <h2 class="section-title lang-en">Latest Releases</h2>
15581        <div class="releases-grid" id="releasesGrid">
15582        <div class="release-card">
15583            <div class="release-image">🎵</div>
15584            <div class="release-info">
15585                <h3 class="release-title lang-fr">Miroir - Premier Single</h3>
15586                <h3 class="release-title lang-en">Miroir - First Single</h3>
15587                <p class="release-description lang-fr">\xc9coutez la musique de Miroir sur les r\xe9seaux sociaux</p>
15588                <p class="release-description lang-en">Listen to Miroir's music on social media</p>
15589                <div class="streaming-links">
15590                    <a href="https://www.youtube.com/@MiroirMusicBand" target="_blank" class="streaming-link">YouTube</a>
15591                    <a href="https://www.instagram.com/miroirmusicband/" target="_blank" class="streaming-link">Instagram</a>
15592                    <a href="https://www.tiktok.com/@miroirmusicband" target="_blank" class="streaming-link">TikTok</a>
15593                </div>
15594            </div>
15595        </div>
15596    </div>
15597    </div>
15598</section>
15599
15600<section class="section section-dark" id="videos">
15601    <div class="container">
15602        <h2 class="section-title lang-fr">Vid\xe9os Musicales</h2>
15603        <h2 class="section-title lang-en">Music Videos</h2>
15604        <div class="videos-grid" id="videosGrid">
15605        <div class="video-card">
15606            <div class="video-embed">📹</div>
15607            <div class="video-info">
15608                <h3 class="video-title lang-fr">Miroir - Clip Musical</h3>
15609                <h3 class="video-title lang-en">Miroir - Music Video</h3>
15610                <p class="lang-fr">Regardez nos derniers clips et performances live sur YouTube</p>
15611                <p class="lang-en">Watch our latest music videos and live performances on YouTube</p>
15612                <a href="https://www.youtube.com/@MiroirMusicBand" target="_blank" class="video-link lang-fr">Voir sur YouTube →</a>
15613                <a href="https://www.youtube.com/@MiroirMusicBand" target="_blank" class="video-link lang-en">Watch on YouTube →</a>
15614            </div>
15615        </div>
15616        <div class="video-card">
15617            <div class="video-embed">🎬</div>
15618            <div class="video-info">
15619                <h3 class="video-title lang-fr">Vid\xe9os Courtes</h3>
15620                <h3 class="video-title lang-en">Short Videos</h3>
15621                <p class="lang-fr">Suivez nos coulisses et extraits musicaux sur TikTok et Instagram</p>
15622                <p class="lang-en">Follow our behind-the-scenes and music clips on TikTok and Instagram</p>
15623                <a href="https://www.tiktok.com/@miroirmusicband" target="_blank" class="video-link lang-fr">Voir sur TikTok →</a>
15624                <a href="https://www.tiktok.com/@miroirmusicband" target="_blank" class="video-link lang-en">Watch on TikTok →</a>
15625            </div>
15626        </div>
15627    </div>
15628        <div class="view-all-btn">
15629            <a href="https://www.youtube.com/@MiroirMusicBand" target="_blank" class="lang-fr">Voir Plus sur YouTube</a>
15630            <a href="https://www.youtube.com/@MiroirMusicBand" target="_blank" class="lang-en">Watch More on YouTube</a>
15631        </div>
15632    </div>
15633</section>
15634
15635<section class="section" id="news">
15636    <div class="container">
15637        <h2 class="section-title lang-fr">Derni\xe8res Actualit\xe9s</h2>
15638        <h2 class="section-title lang-en">Latest News</h2>
15639        <div class="news-grid" id="newsGrid">
15640        <div class="news-card">
15641            <div class="news-image">📰</div>
15642            <div class="news-content">
15643                <h3 class="news-title lang-fr">Bienvenue dans l'Univers Miroir</h3>
15644                <h3 class="news-title lang-en">Welcome to Miroir's World</h3>
15645                <p class="news-excerpt lang-fr">Suivez-nous sur les r\xe9seaux sociaux pour les derni\xe8res actualit\xe9s sur le groupe, les nouvelles s
15645orties et les concerts</p>
15646                <p class="news-excerpt lang-en">Follow us on social media for latest news about the band, new releases, and live concerts</p>
15647                <a href="https://www.instagram.com/miroirmusicband/" target="_blank" class="read-more lang-fr">Suivre sur Instagram →</a>
15648                <a href="https://www.instagram.com/miroirmusicband/" target="_blank" class="read-more lang-en">Follow on Instagram →</a>
15649            </div>
15650        </div>
15651        <div class="news-card">
15652            <div class="news-image">🎤</div>
15653            <div class="news-content">
15654                <h3 class="news-title lang-fr">Rencontrez les Artistes</h3>
15655                <h3 class="news-title lang-en">Meet the Artists</h3>
15656                <p class="news-excerpt lang-fr">D\xe9couvrez les histoires de nos 12 artistes et regardez les moments de r\xe9p\xe9tition et de concert sur nos pages</p>
15657                <p class="news-excerpt lang-en">Discover the stories of our 12 artists and watch rehearsal and concert moments on our pages</p>
15658                <a href="https://facebook.com/Miroirofficial" target="_blank" class="read-more lang-fr">Visiter Notre Page →</a>
15659                <a href="https://facebook.com/Miroirofficial" target="_blank" class="read-more lang-en">Visit Our Page →</a>
15660            </div>
15661        </div>
15662    </div>
15663    </div>
15664</section>
15665
15666<footer class="main-footer">
15667    <div class="container">
15668        <div class="social-links">
15669            <a href="https://www.youtube.com/@MiroirMusicBand" target="_blank" class="social-link">▶</a>
15670            <a href="https://www.instagram.com/miroirmusicband/" target="_blank" class="social-link">📷</a>
15671            <a href="https://www.tiktok.com/@miroirmusicband" target="_blank" class="social-link">🎵</a>
15672            <a href="https://facebook.com/Miroirofficial" target="_blank" class="social-link">👥</a>
15673        </div>
15674        <p class="lang-fr">&copy; 2025 Miroir. Tous droits r\xe9serv\xe9s.</p>
15675        <p class="lang-en">&copy; 2025 Miroir. All rights reserved.</p>
15676    </div>
15677</footer>
15678
15679
15680
15681
15682<div id="bioPages">
15683<div id="bio-adrien-caron" class="bio-page">
15684            <div class="bio-header">
15685                <div class="container">
15686                    <a href="#artists" data-action="back" class="back-button lang-fr">← Retour aux Artistes</a>
15687                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
15688                </div>
15689            </div>
15690            
15691            <div class="bio-content">
15692                <div class="bio-card">
15693                    <div class="bio-image-section">
15694                        <img src="https://media.echovira.com/miroir/miroir_adrien_caron_male_singer_portrait_1.png" alt="Adrien Caron" class="bio-artist-image"
15695                srcset="https://media.echovira.com/miroir/miroir_adrien_caron_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_adrien_caron_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_adrien_caron_male_singer_portrait_1-full.webp 1024w"
15696                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
15697                    </div>
15698                    <div class="bio-text-section">
15699                        <div class="bio-artist-title">
15700                            <h1>Adrien Caron</h1>
15701                            <div class="stage-name">"Adrien" • 27 ans / years</div>
15702                            <div class="role lang-fr">Chanteur</div>
15703                            <div class="role lang-en">Male Singer</div>
15704                        </div>
15705                        <div class="bio-description lang-fr">
15706                            <p>Adrien (Adrien Caron), 27 ans, chanteur de Miroir — un rocker \xe0 la voix brute qui enrichit le son du groupe. Sa tessiture puissante, son timbre rugueux et son \xe9nergie sc\xe9nique apportent du relief aux compositions, entre rock et m\xe9lodies \xe9lectro.</p><p>En tant que vocaliste de Miroir, son timbre chaud, son large \xe9ventail et son phras\xe9 pr\xe9cis offrent une dynamique contr\xf4l\xe9e et une pr\xe9sence sc\xe9nique imposante fa\xe7onn\xe9e par des influences rock et blues. Son ton vocal oriente les textures du groupe — ajoutant du mordant sur les morceaux plus lourds et de l'intimit\xe9 sur les moments plus calmes.</p><p>Nouveaux morceaux \xe0 venir : suivez-nous, \xe9coutez le prochain single et dites-nous quelle chanson vous voulez entendre en live!</p>
15707                        </div>
15708                        <div class="bio-description lang-en">
15709                            <p>Meet Adrien Caron — Adrien, 27, the new male singer of Miroir. A bold rocker with a raw voice that brings grit to the band's sound.</p><p>
15709As Miroir's vocalist his warm-edged timbre, wide range and precise phrasing deliver controlled dynamics and a commanding stage presence shaped by rock and blues influences. His vocal tone steers the band's textures—adding bite on heavier tracks and intimacy on quieter moments.</p><p>Which lifts both studio arrangements and live intensity. Check out the latest singles and live clips to hear how his delivery reshapes familiar songs.</p>
15710                        </div>
15711                    </div>
15712                </div>
15713            </div>
15714        </div>
15715<div id="bio-amelie-rousseau" class="bio-page">
15716            <div class="bio-header">
15717                <div class="container">
15718                    <a href="#artists" data-action="back" class="back-button lang-fr">← Retour aux Artistes</a>
15719                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
15720                </div>
15721            </div>
15722            
15723            <div class="bio-content">
15724                <div class="bio-card">
15725                    <div class="bio-image-section">
15726                        <img src="https://media.echovira.com/miroir/miroir_amelie_rousseau_female_singer_portrait_1.png" alt="Amelie Rousseau" class="bio-artist-image"
15727                srcset="https://media.echovira.com/miroir/miroir_amelie_rousseau_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_amelie_rousseau_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_amelie_rousseau_female_singer_portrait_1-full.webp 1024w"
15728                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
15729                    </div>
15730                    <div class="bio-text-section">
15731                        <div class="bio-artist-title">
15732                            <h1>Amelie Rousseau</h1>
15733                            <div class="stage-name">"Am\xe9lie" • 24 ans / years</div>
15734                            <div class="role lang-fr">Chanteuse</div>
15735                            <div class="role lang-en">Female Singer</div>
15736                        </div>
15737                        <div class="bio-description lang-fr">
15738                            <p>Voici Am\xe9lie (Amelie Rousseau), 24 ans — la chanteuse de Miroir, le cœur \xe9motionnel du groupe. Sa voix, \xe0 la fois puissante et intime, apporte chaleur, authenticit\xe9 et une \xe9nergie qui transforme chaque chanson en moment suspendu.</p><p>En tant que vocaliste, elle offre un timbre clair et chaud avec une gamme flexible, un phras\xe9 r\xe9fl\xe9chi, une dynamique pr\xe9cise et une pr\xe9sence sc\xe9nique inform\xe9e par les traditions indie-pop et chanson. Sa couleur vocale et son phras\xe9 remod\xe8lent les m\xe9lodies du groupe.</p><p>Elle fa\xe7onne le son de Miroir par son timbre unique et sa pr\xe9sence sc\xe9nique — restez \xe0 l'\xe9coute pour nos prochaines sorties et dites-nous ce que vous ressentez!</p>
15739                        </div>
15740                        <div class="bio-description lang-en">
15741                            <p>Meet Am\xe9lie — Amelie Rousseau, 24, the new voice of Miroir. She is the emotional heart of the band, bringing warmth and authenticity to every performance.</p><p>Her vocal color and phrasing reshape the band's melodies, turning sparse arrangements into intimate swells and lifting crescendos on stage. As a vocalist she offers a clear, warm timbre with a flexible range, thoughtful phrasing, precise dynamics.</p><p>And a stage presence informed by indie-pop and chanson traditions. Her voice is powerful yet intimate, blending energy and nuance to turn songs into moments you can feel.</p>
15742                        </div>
15743                    </div>
15744                </div>
15745            </div>
15746        </div>
15747<div id="bio-aurelie-martin" class="bio-page">
15748            <div class="bio-header">
15749                <div class="container">
15750                    <a href="#artists" data-action="back" class="back-button lang-fr">← Retour aux Artistes</a>
15751                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
15752                </div>
15753            </div>
15754            
15755            <div class="bio-content">
15756                <div class="bio-card">
15757                    <div class="bio-image-section">
15758                        <img src="https://media.echovira.com/miroir/miroir_aurelie_martin_multi_instrumentalist_portrait_0.png" alt="Aurelie Martin" class="bio-artist-image"
15759                srcset="https://media.echovira.com/miroir/miroir_aurelie_martin_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/miroir/miroir_aurelie_martin_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/miroir/miroir_aurelie_martin_multi_instrumentalist_portrait_0-full.
15759webp 1024w"
15760                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
15761                    </div>
15762                    <div class="bio-text-section">
15763                        <div class="bio-artist-title">
15764                            <h1>Aurelie Martin</h1>
15765                            <div class="stage-name">"Aur\xe9lie" • 25 ans / years</div>
15766                            <div class="role lang-fr">Multi-instrumentiste</div>
15767                            <div class="role lang-en">Multi-Instrumentalist</div>
15768                        </div>
15769                        <div class="bio-description lang-fr">
15770                            <p>Rencontrez Aur\xe9lie (Aur\xe9lie Martin), 25 ans — multi-instrumentiste de Miroir, ses mains magiques sculptent notre son. Elle fait vibrer la guitare, le piano, le synth\xe9 et le violon avec une pr\xe9cision et une sensibilit\xe9 rares, ma\xeetrisant chaque instrument comme une extension de sa voix musicale.</p><p>Sur sc\xe8ne, elle passe d'un instrument \xe0 l'autre avec une articulation pr\xe9cise et une touche chaleureuse qui ancre le groove du groupe et \xe9l\xe8ve l'\xe9nergie live. En tant que compositrice, elle construit des motifs m\xe9morables et des tournures harmoniques claires qui fa\xe7onnent l'arc \xe9motionnel de chaque chanson.</p><p>Son jeu ajoute la texture qui unit rock, synth et classique au cœur de notre univers sonore — \xe9coutez notre prochain single, partagez vos impressions et suivez-nous!</p>
15771                        </div>
15772                        <div class="bio-description lang-en">
15773                            <p>Meet Aur\xe9lie (Aurelie Martin), 25, the multi-instrumentalist of Miroir. She bridges rock, synth, and classical elements into the band's sound.</p><p>On stage she switches between instruments with precise articulation and a warm touch that anchors the band's groove and lifts the live energy. As a composer she builds memorable motifs and clear harmonic turns that shape each song's emotional arc.</p><p>As an arranger she crafts voicings and transitions that tighten the band's dynamics and flow. Her role in the studio translates those ideas into layered, spacious recordings.</p>
15774                        </div>
15775                    </div>
15776                </div>
15777            </div>
15778        </div>
15779<div id="bio-camille-durand" class="bio-page">
15780            <div class="bio-header">
15781                <div class="container">
15782                    <a href="#artists" data-action="back" class="back-button lang-fr">← Retour aux Artistes</a>
15783                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
15784                </div>
15785            </div>
15786            
15787            <div class="bio-content">
15788                <div class="bio-card">
15789                    <div class="bio-image-section">
15790                        <img src="https://media.echovira.com/miroir/miroir_camille_durand_female_singer_portrait_0.png" alt="Camille Durand" class="bio-artist-image"
15791                srcset="https://media.echovira.com/miroir/miroir_camille_durand_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/miroir/miroir_camille_durand_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/miroir/miroir_camille_durand_female_singer_portrait_0-full.webp 1024w"
15792                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
15793                    </div>
15794                    <div class="bio-text-section">
15795                        <div class="bio-artist-title">
15796                            <h1>Camille Durand</h1>
15797                            <div class="stage-name">"Camille" • 25 ans / years</div>
15798                            <div class="role lang-fr">Chanteuse</div>
15799                            <div class="role lang-en">Female Singer</div>
15800                        </div>
15801                        <div class="bio-description lang-fr">
15802                            <p>D\xe9couvrez Camille Durand — Camille, 25 ans, chanteuse de Miroir: une diva puissante, voix a\xe9rienne et pr\xe9sence magn\xe9tique. Sa voix spectaculaire et son \xe9nergie sc\xe9nique sculptent le son de Miroir, apportant des envol\xe9es vocales et une intensit\xe9 qui d\xe9finissent nos morceaux.</p><p>En tant que chanteuse de Miroir, elle apporte un timbre chaud et miell\xe9 et une large gamme qui va des tons bas intimes aux ceintures hautes claires. Son phras\xe9 et sa dynamique — runs subtils, contr\xf4le de la respiration pr\xe9cis et crescendos dramatiques — fa\xe7onnent les m\xe9lodies et ajoutent de la profondeur \xe9motionnelle.</p><p>Pr\xe9parez-vous \xe0 la nouvelle musique \xe0 venir — \xe9coutez, partagez et dites-nous quelle chanson vous a le plus frapp\xe9!</p>
15803                        </div>
15804                        <div class="bio-description lang-en">
15805                            <p>Meet Camille Durand (stage name: Camille), 25, the female singer of Miroir. A commanding vocalist with a soaring range and unmistakable stage presence.</p><p>As Miroir's singer she brings a warm, honeyed timbre and a wide range that moves from intimate low tone
15805s to clear high belts. Her phrasing and dynamics—subtle runs, precise breath control, and dramatic swells—shape melodies and add emotional depth.</p><p>Influenced by indie, soul, and modern pop, she favors expressive storytelling and refined melodic choices. Her spectacular tone and vocal agility turn songs into emotional climaxes.</p>
15806                        </div>
15807                    </div>
15808                </div>
15809            </div>
15810        </div>
15811<div id="bio-claire-lefevre" class="bio-page">
15812            <div class="bio-header">
15813                <div class="container">
15814                    <a href="#artists" data-action="back" class="back-button lang-fr">← Retour aux Artistes</a>
15815                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
15816                </div>
15817            </div>
15818            
15819            <div class="bio-content">
15820                <div class="bio-card">
15821                    <div class="bio-image-section">
15822                        <img src="https://media.echovira.com/miroir/miroir_claire_lefevre_female_singer_portrait_0.png" alt="Claire Lefevre" class="bio-artist-image"
15823                srcset="https://media.echovira.com/miroir/miroir_claire_lefevre_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/miroir/miroir_claire_lefevre_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/miroir/miroir_claire_lefevre_female_singer_portrait_0-full.webp 1024w"
15824                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
15825                    </div>
15826                    <div class="bio-text-section">
15827                        <div class="bio-artist-title">
15828                            <h1>Claire Lefevre</h1>
15829                            <div class="stage-name">"Claire" • 27 ans / years</div>
15830                            <div class="role lang-fr">Chanteuse</div>
15831                            <div class="role lang-en">Female Singer</div>
15832                        </div>
15833                        <div class="bio-description lang-fr">
15834                            <p>D\xe9couvrez Claire Lefevre — Claire, 27 ans, la chanteuse raffin\xe9e de Miroir, qui apporte \xe9l\xe9gance et puissance vocale. Sa voix, chaude et sophistiqu\xe9e, m\xeale finesse, vibrato ma\xeetris\xe9 et une \xe9nergie sc\xe9nique qui captive \xe0 chaque note.</p><p>Sa voix remod\xe8le les arrangements de Miroir, \xe9levant les harmonies, aiguisant la dynamique et alimentant l'intensit\xe9 live du groupe. En tant que vocaliste, le timbre de Claire est chaud et clair, avec une gamme mezzo qui atteint des aigus expressifs, un phras\xe9 pr\xe9cis et une dynamique contr\xf4l\xe9e.</p><p>Elle fa\xe7onne l'\xe2me du son de Miroir et pr\xe9pare des morceaux \xe0 venir qui d\xe9voilent toute sa sensibilit\xe9 et son art; \xe9coutez bient\xf4t et suivez-nous pour ne rien manquer!</p>
15835                        </div>
15836                        <div class="bio-description lang-en">
15837                            <p>Meet Claire Lefevre — Claire, 27, the new female singer of Miroir. A sophisticated presence who brings elegance and refinement to the band's sound.</p><p>Her voice reshapes Miroir's arrangements, lifting harmonies, sharpening dynamics and fueling the band's live intensity. As a vocalist, Claire's timbre is warm and clear, with a mezzo range that reaches expressive highs, precise phrasing and controlled dynamics.</p><p>Her stage presence balances poise and combustible energy, turning quiet moments into intimate highlights and choruses into cathartic peaks.</p>
15838                        </div>
15839                    </div>
15840                </div>
15841            </div>
15842        </div>
15843<div id="bio-elise-bernard" class="bio-page">
15844            <div class="bio-header">
15845                <div class="container">
15846                    <a href="#artists" data-action="back" class="back-button lang-fr">← Retour aux Artistes</a>
15847                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
15848                </div>
15849            </div>
15850            
15851            <div class="bio-content">
15852                <div class="bio-card">
15853                    <div class="bio-image-section">
15854                        <img src="https://media.echovira.com/miroir/miroir_elise_bernard_female_singer_portrait_0.png" alt="Elise Bernard" class="bio-artist-image"
15855                srcset="https://media.echovira.com/miroir/miroir_elise_bernard_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/miroir/miroir_elise_bernard_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/miroir/miroir_elise_bernard_female_singer_portrait_0-full.
15855webp 1024w"
15856                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
15857                    </div>
15858                    <div class="bio-text-section">
15859                        <div class="bio-artist-title">
15860                            <h1>Elise Bernard</h1>
15861                            <div class="stage-name">"\xc9lise" • 26 ans / years</div>
15862                            <div class="role lang-fr">Chanteuse</div>
15863                            <div class="role lang-en">Female Singer</div>
15864                        </div>
15865                        <div class="bio-description lang-fr">
15866                            <p>Voici \xc9lise Bernard — \xc9lise, 26 ans, voix charismatique aux timbres vifs et \xe9nergie entra\xeenante, chanteuse du groupe Miroir. Sa voix enjou\xe9e, ses nuances et son \xe9nergie sc\xe9nique apportent la couleur et la dynamique qui d\xe9finissent le son de Miroir.</p><p>Une charmeuse optimiste: ses vocaux vifs et agiles et son \xe9nergie engageante donnent \xe0 Miroir leur \xe9tincelle. En tant que vocaliste, elle apporte un timbre chaud et clair, une gamme flexible, un phras\xe9 r\xe9fl\xe9chi et un contr\xf4le dynamique enracin\xe9s dans les influences indie-pop et soul.</p><p>Pr\xe9parez-vous pour nos prochains titres qui mettront son timbre vivant \xe0 l'honneur — suivez, pr\xe9-save et dites-nous votre morceau pr\xe9f\xe9r\xe9 en commentaire!</p>
15867                        </div>
15868                        <div class="bio-description lang-en">
15869                            <p>Meet \xc9lise — Elise Bernard, 26, the new voice of Miroir. Bright vocals, playful presence, and a fresh spark on stage.</p><p>An upbeat charmer: her bright, agile vocals and engaging energy give Miroir their spark. As vocalist she brings a warm, clear timbre, a flexible range, thoughtful phrasing and dynamic control rooted in indie-pop and soul influences.</p><p>On record and live, her phrasing and stage presence reshape arrangements — lifting choruses, sharpening hooks and pushing the band toward tighter grooves.</p>
15870                        </div>
15871                    </div>
15872                </div>
15873            </div>
15874        </div>
15875<div id="bio-isabelle-marchand" class="bio-page">
15876            <div class="bio-header">
15877                <div class="container">
15878                    <a href="#artists" data-action="back" class="back-button lang-fr">← Retour aux Artistes</a>
15879                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
15880                </div>
15881            </div>
15882            
15883            <div class="bio-content">
15884                <div class="bio-card">
15885                    <div class="bio-image-section">
15886                        <img src="https://media.echovira.com/miroir/miroir_isabelle_marchand_composer_lyricist_portrait_0.png" alt="Isabelle Marchand" class="bio-artist-image"
15887                srcset="https://media.echovira.com/miroir/miroir_isabelle_marchand_composer_lyricist_portrait_0-400.webp 400w, https://media.echovira.com/miroir/miroir_isabelle_marchand_composer_lyricist_portrait_0-800.webp 800w, https://media.echovira.com/miroir/miroir_isabelle_marchand_composer_lyricist_portrait_0-full.webp 1024w"
15888                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
15889                    </div>
15890                    <div class="bio-text-section">
15891                        <div class="bio-artist-title">
15892                            <h1>Isabelle Marchand</h1>
15893                            <div class="stage-name">"Isabelle" • 26 ans / years</div>
15894                            <div class="role lang-fr">Compositrice & Paroli\xe8re</div>
15895                            <div class="role lang-en">Composer & Lyricist</div>
15896                        </div>
15897                        <div class="bio-description lang-fr">
15898                            <p>Voici Isabelle Marchand — Isabelle, 26 ans, compositrice & paroli\xe8re du groupe Miroir, la plume qui fa\xe7onne nos m\xe9lodies. \xc9criture po\xe9tique, arrangements cisel\xe9s et sens aigu des atmosph\xe8res : elle compose des lignes m\xe9lodiques et des textes intemporels qui donnent \xe0 Miroir son identit\xe9 sonore.</p><p>En tant que compositrice, elle cr\xe9e des m\xe9lodies m\xe9morables, des choix harmoniques distinctifs et des motifs qui guident chaque arrangement. En tant que paroli\xe8re, sa narration m\xe9lange des images vives, une cadence pr\xe9cise et une perspective \xe9motionnelle intime.</p><p>Son processus cr\xe9atif m\xeale guitare, piano et carnets de poche pour transformer une \xe9motion en chanson; ses compositions b\xe2tissent les textures et les refrains qui vous hantent!</p>
15899                        </div>
15900                        <div class="bio-description lang-en">
15901                            <p>Introducing Isabelle — the voice shaping Miroir's next chapter. Isabelle Marchand, 26, joins the band as Composer & Lyricist.</p><p>A poetic writer, she brings artistic depth and lyrics that feel timeless. As composer she crafts memorable melodies, distinctive harmonic choices, and motifs that guide each arrangement. As lyricist her storytelling blends vivid imagery, precise cadence, and an intimate emotional perspective.</p><p>Her songs give Miroir a clear emotional arc and allow the band to build dynamic peaks on stage. Those structural and lyrical choices shape the band's sonic identity.</p>
15902                        </div>
15903                    </div>
15904                </div>
15905            </div>
15906        </div>
15907<div id="bio-julien-moreau" class="bio-page">
15908            <div class="bio-header">
15909                <div class="container">
15910                    <a href="#artists" data-action="back" class="back-button lang-fr">← Retour aux Artistes</a>
15911                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
15912                </div>
15913            </div>
15914            
15915            <div class="bio-content">
15916                <div class="bio-card">
15917                    <div class="bio-image-section">
15918                        <img src="https://media.echovira.com/miroir/miroir_julien_moreau_male_singer_portrait_1.png" alt="Julien Moreau" class="bio-artist-image"
15919                srcset="https://media.echovira.com/miroir/miroir_julien_moreau_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_julien_moreau_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_julien_moreau_male_singer_portrait_1-full.
15919webp 1024w"
15920                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
15921                    </div>
15922                    <div class="bio-text-section">
15923                        <div class="bio-artist-title">
15924                            <h1>Julien Moreau</h1>
15925                            <div class="stage-name">"Julien" • 25 ans / years</div>
15926                            <div class="role lang-fr">Chanteur</div>
15927                            <div class="role lang-en">Male Singer</div>
15928                        </div>
15929                        <div class="bio-description lang-fr">
15930                            <p>D\xe9couvrez Julien Moreau — Julien, 25 ans, chanteur charismatique et frontman du groupe Miroir. Frontman — charismatique et naturellement styl\xe9, voix suave et timbre chaleureux, pr\xe9sence sc\xe9nique puissante qui fa\xe7onne l'\xe2me sonore du groupe.</p><p>En tant que frontman de Miroir, il fa\xe7onne le son du groupe avec des lignes lead chaleureuses, encadre les arrangements et conduit l'\xe9nergie live \xe0 travers des dynamiques serr\xe9es et une interaction sur sc\xe8ne. Son timbre est chaud avec une l\xe9g\xe8re raucit\xe9, sa gamme couvre des registres expressifs moyens \xe0 hauts.</p><p>Bient\xf4t de nouveaux titres pour mettre en lumi\xe8re son \xe9nergie et son sens du chant — \xe9coutez, partagez et dites-nous ce que vous en pensez!</p>
15931                        </div>
15932                        <div class="bio-description lang-en">
15933                            <p>Meet Julien Moreau — stage name Julien, 25. Male singer and frontman of Miroir.</p><p>Frontman — charismatic and effortlessly stylish, with smooth vocals and a commanding presence. As Miroir's frontman he shapes the band's sound with warm lead lines, frames arrangements, and drives live energy through tight dynamics and onstage interaction.</p><p>His timbre is warm with a subtle husk, his range spans expressive mid-to-high registers, and his phrasing and dynamics draw on soul and indie influences to give songs clear emotional focus.</p>
15934                        </div>
15935                    </div>
15936                </div>
15937            </div>
15938        </div>
15939<div id="bio-leo-fontaine" class="bio-page">
15940            <div class="bio-header">
15941                <div class="container">
15942                    <a href="#artists" data-action="back" class="back-button lang-fr">← Retour aux Artistes</a>
15943                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
15944                </div>
15945            </div>
15946            
15947            <div class="bio-content">
15948                <div class="bio-card">
15949                    <div class="bio-image-section">
15950                        <img src="https://media.echovira.com/miroir/miroir_leo_fontaine_male_singer_portrait_1.png" alt="Leo Fontaine" class="bio-artist-image"
15951                srcset="https://media.echovira.com/miroir/miroir_leo_fontaine_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_leo_fontaine_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_leo_fontaine_male_singer_portrait_1-full.webp 1024w"
15952                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
15953                    </div>
15954                    <div class="bio-text-section">
15955                        <div class="bio-artist-title">
15956                            <h1>Leo Fontaine</h1>
15957                            <div class="stage-name">"L\xe9o" • 26 ans / years</div>
15958                            <div class="role lang-fr">Chanteur</div>
15959                            <div class="role lang-en">Male Singer</div>
15960                        </div>
15961                        <div class="bio-description lang-fr">
15962                            <p>Voici L\xe9o (Leo Fontaine), 26 ans — chanteur de Miroir : le cœur \xe9motionnel du groupe, d\xe9livrant des performances sinc\xe8res et pleines de gr\xe2ce. Sa voix chaude et expressive, son phras\xe9 intime et son \xe9nergie sc\xe9nique donnent \xe0 nos chansons une intensit\xe9 unique qui vous transporte \xe0 chaque note.</p><p>En tant que vocaliste, son timbre chaud, sa gamme flexible et son phras\xe9 pr\xe9cis apportent une dynamique qui \xe9l\xe8ve les m\xe9lodies du groupe. Il privil\xe9gie les crescendos subtils et les respirations contr\xf4l\xe9es, puisant dans les influences soul et indie pour fa\xe7onner chaque ligne.</p><p>L\xe9o sculpte le son de Miroir avec une profondeur vocale qui \xe9l\xe8ve nos compositions et pr\xe9pare le terrain pour nos prochains morceaux — attendez-vous \xe0 des \xe9motions brutes et des envol\xe9es puissantes!</p>
15963                        </div>
15964                        <div class="bio-description lang-en">
15965                            <p>Meet L\xe9o — Leo Fontaine, 26, the male singer of Miroir. At his emotional core, he delivers heartfelt performances with quiet grace.</p><p>As a vocalist, his warm timbre, flexible range and precise phrasing bring dynamics that lift the band's melodies. He favors subtle crescendos and controlled breaths, drawing on soul and indie influences to shape each line.</p><p>On stage his steady presence and nuanced delivery turn songs into shared moments, giving Miroir a focused live energy. In studio and on tour, his voice anch
15965ors arrangements.</p>
15966                        </div>
15967                    </div>
15968                </div>
15969            </div>
15970        </div>
15971<div id="bio-mathis-dubois" class="bio-page">
15972            <div class="bio-header">
15973                <div class="container">
15974                    <a href="#artists" data-action="back" class="back-button lang-fr">← Retour aux Artistes</a>
15975                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
15976                </div>
15977            </div>
15978            
15979            <div class="bio-content">
15980                <div class="bio-card">
15981                    <div class="bio-image-section">
15982                        <img src="https://media.echovira.com/miroir/miroir_mathis_dubois_male_singer_portrait_1.png" alt="Mathis Dubois" class="bio-artist-image"
15983                srcset="https://media.echovira.com/miroir/miroir_mathis_dubois_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_mathis_dubois_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_mathis_dubois_male_singer_portrait_1-full.webp 1024w"
15984                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
15985                    </div>
15986                    <div class="bio-text-section">
15987                        <div class="bio-artist-title">
15988                            <h1>Mathis Dubois</h1>
15989                            <div class="stage-name">"Mathis" • 24 ans / years</div>
15990                            <div class="role lang-fr">Chanteur</div>
15991                            <div class="role lang-en">Male Singer</div>
15992                        </div>
15993                        <div class="bio-description lang-fr">
15994                            <p>Voici Mathis (Mathis Dubois), chanteur de Miroir, 24 ans — une voix solaire, \xe9nergique et joueuse qui parle aux jeunes. Son timbre lumineux, son style upbeat et sa pr\xe9sence sc\xe9nique apportent la fra\xeecheur et la profondeur qui d\xe9finissent notre son.</p><p>Son \xe9nergie ludique et ses vocaux flottants se connectent avec les jeunes auditeurs gr\xe2ce \xe0 un charme sans effort et un style contemporain. En tant que chanteur principal de Miroir, il fa\xe7onne le son du groupe avec un timbre lumineux et une large gamme qui emm\xe8nent les chansons de versets intimes \xe0 des refrains montants.</p><p>Restez \xe0 l'\xe9coute pour nos prochains morceaux — \xe9coutez, commentez et partagez si vous sentez la vibe!</p>
15995                        </div>
15996                        <div class="bio-description lang-en">
15997                            <p>Meet Mathis Dubois — Mathis, 24, the new male singer of Miroir. Fresh voice, playful energy, and modern style ready to light up the stage.</p><p>His playful energy and buoyant vocals connect with young listeners through effortless charm and contemporary style. As Miroir's lead vocalist he shapes the band's sound with a bright timbre and wide range that take songs from intimate verses to soaring choruses.</p><p>His phrasing and dynamic control—subtle in quiet moments, powerful on climaxes—give the live set contagious momentum and a clear identity.</p>
15998                        </div>
15999                    </div>
16000                </div>
16001            </div>
16002        </div>
16003<div id="bio-nicolas-laurent" class="bio-page">
16004            <div class="bio-header">
16005                <div class="container">
16006                    <a href="#artists" data-action="back" class="back-button lang-fr">← Retour aux Artistes</a>
16007                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
16008                </div>
16009            </div>
16010            
16011            <div class="bio-content">
16012                <div class="bio-card">
16013                    <div class="bio-image-section">
16014                        <img src="https://media.echovira.com/miroir/miroir_nicolas_laurent_male_singer_portrait_1.png" alt="Nicolas Laurent" class="bio-artist-image"
16015                srcset="https://media.echovira.com/miroir/miroir_nicolas_laurent_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_nicolas_laurent_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_nicolas_laurent_male_singer_portrait_1-full.
16015webp 1024w"
16016                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
16017                    </div>
16018                    <div class="bio-text-section">
16019                        <div class="bio-artist-title">
16020                            <h1>Nicolas Laurent</h1>
16021                            <div class="stage-name">"Nico" • 23 ans / years</div>
16022                            <div class="role lang-fr">Chanteur</div>
16023                            <div class="role lang-en">Male Singer</div>
16024                        </div>
16025                        <div class="bio-description lang-fr">
16026                            <p>Voici Nico (Nicolas Laurent), 23 ans — le chanteur romantique de Miroir, qui apporte chaleur et passion \xe0 chaque performance. Sa voix velout\xe9e et \xe9nergique fait vibrer nos m\xe9lodies et donne au groupe une \xe2me \xe0 la fois tendre et intense.</p><p>Sa voix a un timbre chaud et une gamme flexible. Un phras\xe9 pr\xe9cis et un contr\xf4le dynamique soigneux lui permettent de fa\xe7onner des versets calmes et des refrains montants, puisant dans les influences soul et indie-pop.</p><p>Pr\xe9parez-vous: de nouveaux morceaux arrivent bient\xf4t — \xe9coutez, partagez et dites-nous ce que vous en pensez!</p>
16027                        </div>
16028                        <div class="bio-description lang-en">
16029                            <p>Meet Nico — Nicolas Laurent, Miroir's new singer, 23. A romantic performer who brings warmth and passion to every show.</p><p>His voice has a warm timbre and a flexible range. Precise phrasing and careful dynamic control let him shape quiet verses and soaring choruses, drawing on soul and indie-pop influences.</p><p>As Miroir's male singer, Nico's vocal choices define the band's sonic identity. On stage he converts subtle moments into communal high points, and his phrasing drives the band's live energy.</p>
16030                        </div>
16031                    </div>
16032                </div>
16033            </div>
16034        </div>
16035<div id="bio-sophie-garnier" class="bio-page">
16036            <div class="bio-header">
16037                <div class="container">
16038                    <a href="#artists" data-action="back" class="back-button lang-fr">← Retour aux Artistes</a>
16039                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
16040                </div>
16041            </div>
16042            
16043            <div class="bio-content">
16044                <div class="bio-card">
16045                    <div class="bio-image-section">
16046                        <img src="https://media.echovira.com/miroir/miroir_sophie_garnier_female_singer_portrait_1.png" alt="Sophie Garnier" class="bio-artist-image"
16047                srcset="https://media.echovira.com/miroir/miroir_sophie_garnier_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/miroir/miroir_sophie_garnier_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/miroir/miroir_sophie_garnier_female_singer_portrait_1-full.webp 1024w"
16048                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
16049                    </div>
16050                    <div class="bio-text-section">
16051                        <div class="bio-artist-title">
16052                            <h1>Sophie Garnier</h1>
16053                            <div class="stage-name">"Sophie" • 23 ans / years</div>
16054                            <div class="role lang-fr">Chanteuse</div>
16055                            <div class="role lang-en">Female Singer</div>
16056                        </div>
16057                        <div class="bio-description lang-fr">
16058                            <p>Sophie Garnier — dite Sophie — la chanteuse de Miroir, 23 ans, est notre star dramatique: voix intense, timbre profond et pr\xe9sence sc\xe9nique magn\xe9tique. Sa voix th\xe9\xe2trale et son \xe9nergie br\xfblante transforment chaque morceau en une exp\xe9rience \xe9motionnelle, apportant tension et \xe9l\xe9gance au son du groupe.</p><p>En tant que vocaliste de Miroir, son timbre chaud mais per\xe7ant et sa large gamme donnent aux chansons du groupe un arc \xe9motionnel plus net. Son phras\xe9 et son contr\xf4le dynamique transforment les versets chuchot\xe9s en apog\xe9es explosives, fa\xe7onnant \xe0 la fois les textures de studio et la catharsis live.</p><p>Avec son sens du phras\xe9 et sa puissance vocale, elle fa\xe7onne l'identit\xe9 musicale de Miroir et sublime nos arrangements. Restez \xe0 l'\xe9coute pour nos prochains singles!</p>
16059                        </div>
16060                        <div class="bio-description lang-en">
16061                            <p>Meet Sophie — Sophie Garnier, 23, the new lead singer of Miroir. A dramatic starlet, she brings intense focus and a commanding stage presence.</p><p>As Miroir's vocalist, her warm yet piercing timbre and wide range give the band's songs a sharper emotional arc. Her phrasing and dynamic control turn hushed verses into explosive climaxes, shaping both studio textures and live catharsis.<
16061/p><p>Live, Sophie anchors the band's energy with precise intensity and smart crowd reading. Influenced by art-pop and theatrical rock, she favors intimate delivery and sudden dynamic pushes.</p>
16062                        </div>
16063                    </div>
16064                </div>
16065            </div>
16066        </div>
16067</div>
16068<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
16069  <nav aria-label="Site pages">
16070    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
16071    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
16072    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
16073    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
16074  </nav>
16075  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
16076</footer>
16077`;e.s(["MiroirEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=(0,t.injectFluidCanvas)(a,"#0050b0","#0d1117",.28);function s(e){document.body.classList.remove("lang-fr","lang-en"),document.body.classList.add("lang-"+e),a.querySelectorAll("[data-lang]").forEach(e=>e.classList.remove("active")),a.querySelector(`[data-lang="${e}"]`)?.classList.add("active")}function r(e){a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display="none"});let i=document.getElementById("bio-"+e);
16077i&&(i.classList.add("active"),window.scrollTo(0,0))}function n(){a.querySelectorAll(".bio-page").forEach(e=>e.classList.remove("active")),a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display=""}),window.scrollTo(0,0)}function o(e){let a=e.target,i=a.closest("[data-artist-id]");if(i){e.preventDefault(),r(i.dataset.artistId);return}if(a.closest('[data-action="back"]')){e.preventDefault(),n();return}}window.setLanguage=s,s("fr"),a.querySelector('[data-lang="fr"]')?.addEventListener("click",()=>s("fr")),a.querySelector('[data-lang="en"]')?.addEventListener("click",()=>s("en")),window.showArtistBio=r,window.hideBioPage=n,window.showMainPage=n;let l=document.getElementById("mobileToggle"),c=document.getElementById("navMenu");l&&c&&l.addEventListener("click",()=>c.classList.toggle("active"));let d=()=>document.getElementById("mainNav")?.classList.toggle("scrolled",window.scrollY>100);return a.addEventListener("click",o),window.addEventListener("scroll",d),()=>{i(),a.removeEventListener("click",o),window.removeEventListener("scroll",d),delete window.setLanguage,delete window.showArtistBio,delete window.hideBioPage,delete window.showMainPage}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,className:"echovira-page-root",dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(n)},suppressHydrationWarning:!0}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},805521,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n=`
16078    <link rel="preconnect" href="https://fonts.googleapis.com">
16079    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
16080    <link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;700;900&family=Playfair+Display:wght@400;700&display=swap" rel="stylesheet">
16081    <style>
16082        .entry-title, .post-edit-link, .site-footer, .site-info, .site-header, .site-branding, header.header, .masthead, .page-title {
16083            display: none !important;
16084        }
16085
16086        .vc_row[data-vc-full-width], .wpb_column, .vc_column_container, .wpb_wrapper, .entry-content, .site-content-contain, #content, .site-content, .site, #page, main {
16087            width: 100% !important;
16088            max-width: 100% !important;
16089            padding: 0 !important;
16090            margin: 0 !important;
16091            margin-top: 0 !important;
16092            padding-top: 0 !important;
16093        }
16094
16095        :root {
16096            --ev-bg: #fafafa;
16097            --ev-fg: #2c2c2c;
16098            --primary-color: #1a1a1a;
16099            --morvina-blue: #0039A6;
16100            --morvina-white: #ffffff;
16101            --morvina-red: #D52B1E;
16102            --white: #ffffff;
16103            --light-gray: #f5f5f5;
16104            --text-light: #ffffff;
16105            --text-dark: #2c2c2c;
16106            --background-dark: #0a0a0a;
16107            --background-light: #fafafa;
16108            --gradient-main: linear-gradient(135deg, #0039A6 0%, #D52B1E 100%);
16109            --shadow-light: 0 2px 20px rgba(0,0,0,0.1);
16110            --shadow-heavy: 0 10px 40px rgba(0,0,0,0.2);
16111            --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
16112        }
16113
16114        * {
16115            margin: 0;
16116            padding: 0;
16117            box-sizing: border-box;
16118        }
16119
16120        body {
16121            font-family: 'Raleway', -apple-system, sans-serif;
16122            line-height: 1.8;
16123            color: var(--ev-fg);
16124            background: var(--ev-bg);
16125            overflow-x: hidden;
16126        }
16127
16128        body:not(.lang-ru) .lang-ru { display: none !important; }
16129        body:not(.lang-en) .lang-en { display: none !important; }
16130
16131        /* Flex child of .nav-container (moved there from being a sibling of
16132           it), not absolutely positioned over the nav bar: that positioned
16133           it relative to .main-nav regardless of .nav-container's own flex
16134           layout, landing on top of the hamburger icon on mobile despite
16135           the nav-container padding-right band-aid below (which shifted
16136           the hamburger left but never actually clipped this element,
16137           since it isn't a descendant of the padded box). */
16138        .lang-toggle {
16139            display: flex;
16140            flex-shrink: 0;
16141            background: rgba(255,255,255,0.2);
16142            border-radius: 25px;
16143            padding: 8px;
16144            backdrop-filter: blur(10px);
16145        }
16146
16147        .lang-toggle button {
16148            background: transparent;
16149            border: none;
16150            padding: 8px 16px;
16151            cursor: pointer;
16152            font-weight: 700;
16153            border-radius: 20px;
16154            transition: var(--transition);
16155            font-size: 0.9rem;
16156            color: white;
16157        }
16158
16159        .lang-toggle button.active {
16160            background: var(--morvina-red);
16161            color: white;
16162        }
16163
16164        .main-nav {
16165            position: fixed;
16166            top: 0;
16167            left: 0;
16168            right: 0;
16169            background: rgba(10, 10, 10, 0.95);
16170            backdrop-filter: blur(20px);
16171            z-index: 1000;
16172            padding: 1rem 0;
16173            border-bottom: 1px solid rgba(0, 57, 166, 0.3);
16174        }
16175
16176        .nav-container {
16177            max-width: 1200px;
16178            margin: 0 auto;
16179            padding: 0 20px;
16180            padding-right: 210px;
16181            display: flex;
16182            justify-content: space-between;
16183            align-items: center;
16184        }
16185
16186        .logo img { height: 50px; }
16187
16188        .nav-menu {
16189            display: flex;
16190            list-style: none;
16191            gap: 2rem;
16192        }
16193
16194        .nav-menu a {
16195            color: var(--text-light);
16196            text-decoration: none;
16197            font-weight: 700;
16198            transition: var(--transition);
16199        }
16200
16201        /* --morvina-blue (#0039A6) on the dark nav bg is ~1.78:1, far below
16202           AA's 4.5:1 -- lightened for this specific dark-bg hover context
16203           (--morvina-blue itself is fine as used elsewhere, e.g. on white). */
16204        .nav-menu a:hover { color: #7392ce; }
16205
16206        .mobile-menu-toggle {
16207            display: none;
16208            background: none;
16209            border: none;
16210            color: var(--text-light);
16211            font-size: 1.5rem;
16212            cursor: pointer;
16213        }
16214
16215        .hero-section {
16216            min-height: 100vh;
16217            /* Worst-case gradient stop (#D52B1E red) blended with the 20%
16218               black ::after scrim below -- the real effective background
16219               white hero text renders against. Measured live: the bare
16220               red stop alone was 4.3:1, just under AA's 4.5:1 (a manual
16221               estimate that assumed enough margin turned out too close to
16222               the threshold) -- the scrim gives real headroom. */
16223            --ada-contrast-bg: #aa2218;
16224            background: var(--gradient-main);
16225            display: flex;
16226            align-items: center;
16227            justify-content: center;
16228            text-align: center;
16229            color: var(--text-light);
16230            position: relative;
16231            overflow: hidden;
16232        }
16233
16234        .hero-section::after {
16235            /* White hero text on the gradient's lighter (red) stop is
16236               4.3:1 -- just under AA's 4.5:1. This scrim brings it to
16237               ~7.1:1 without flattening the brand gradient into a solid
16238               color. */
16239            content: '';
16240            position: absolute;
16241            inset: 0;
16242            background: rgba(0, 0, 0, 0.2);
16243            z-index: 1;
16244        }
16245
16246        .hero-section::before {
16247            content: '';
16248            position: absolute;
16249            top: 0;
16250            left: 0;
16251            right: 0;
16252            bottom: 0;
16253            background: radial-gradient(circle at 50% 0%, rgba(255,255,255,0.1) 0%, transparent 50%);
16254        }
16255
16256        .hero-content {
16257            position: relative;
16258            z-index: 2;
16259            max-width: 900px;
16260            padding: 0 20px;
16261        }
16262
16263        .hero-title {
16264            font-family: 'Playfair Display', serif;
16265            font-size: clamp(3rem, 8vw, 6rem);
16266            margin-bottom: 1rem;
16267            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
16268            font-weight: 700;
16269            letter-spacing: 4px;
16270        }
16271
16272        .hero-subtitle {
16273            font-size: clamp(1rem, 2vw, 1.3rem);
16274            margin-bottom: 2rem;
16275            opacity: 0.9;
16276            line-height: 1.6;
16277        }
16278
16279        .cta-button {
16280            display: inline-block;
16281            padding: 18px 40px;
16282            background: white;
16283            color: var(--morvina-blue);
16284            text-decoration: none;
16285            border-radius: 50px;
16286            font-weight: 700;
16287            font-size: 1.1rem;
16288            transition: var(--transition);
16289            box-shadow: var(--shadow-light);
16290        }
16291
16292        .cta-button:hover {
16293            transform: translateY(-3px);
16294            box-shadow: var(--shadow-heavy);
16295            background: var(--morvina-red);
16296            color: white;
16297        }
16298
16299        .section {
16300            padding: 80px 0;
16301        }
16302
16303        .section-dark {
16304            background: var(--background-dark);
16305            color: var(--text-light);
16306        }
16307
16308        .container {
16309            max-width: 1200px;
16310            margin: 0 auto;
16311            padding: 0 20px;
16312        }
16313
16314        .section-title {
16315            text-align: center;
16316            font-size: 2.5rem;
16317            margin-bottom: 3rem;
16318            position: relative;
16319            font-family: 'Playfair Display', serif;
16320            font-weight: 700;
16321            letter-spacing: 2px;
16322        }
16323
16324        .section-title::after {
16325            content: '';
16326            position: absolute;
16327            bottom: -10px;
16328            left: 50%;
16329            transform: translateX(-50%);
16330            width: 80px;
16331            height: 3px;
16332            background: var(--morvina-blue);
16333            border-radius: 2px;
16334        }
16335
16336        .about-content {
16337            max-width: 900px;
16338            margin: 0 auto;
16339            text-align: center;
16340            line-height: 2;
16341            font-size: 1.1rem;
16342        }
16343
16344        .about-content p {
16345            margin-bottom: 1.5rem;
16346        }
16347
16348        .artists-gallery {
16349            display: grid;
16350            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
16351            gap: 2.5rem;
16352            margin-top: 3rem;
16353        }
16354
16355        .artist-card {
16356            position: relative;
16357            cursor: pointer;
16358            transition: var(--transition);
16359            background: white;
16360            border-radius: 20px;
16361            overflow: hidden;
16362            box-shadow: var(--shadow-light);
16363            border: 2px solid transparent;
16364        }
16365
16366        .artist-card:hover {
16367            transform: translateY(-10px) scale(1.02);
16368            box-shadow: var(--shadow-heavy);
16369            border-color: var(--morvina-red);
16370        }
16371
16372        .artist-image-wrapper {
16373            position: relative;
16374            width: 100%;
16375            aspect-ratio: 1;
16376            overflow: hidden;
16377        }
16378
16379        .artist-image {
16380            width: 100%;
16381            height: 100%;
16382            object-fit: cover;
16383            transition: transform 0.5s ease;
16384        }
16385
16386        .artist-card:hover .artist-image {
16387            transform: scale(1.1);
16388        }
16389
16390        .artist-overlay {
16391            position: absolute;
16392            bottom: 0;
16393            left: 0;
16394            right: 0;
16395            background: linear-gradient(to top, rgba(0,0,0,0.9), transparent);
16396            padding: 2rem 1.5rem 1.5rem;
16397            color: white;
16398        }
16399
16400        .artist-stage-name {
16401            font-size: 1.5rem;
16402            font-weight: 900;
16403            margin-bottom: 0.3rem;
16404        }
16405
16406        .artist-role-badge {
16407            display: inline-block;
16408            background: var(--morvina-blue);
16409            padding: 4px 12px;
16410            border-radius: 15px;
16411            font-size: 0.75rem;
16412            font-weight: 700;
16413            text-transform: uppercase;
16414            letter-spacing: 0.5px;
16415        }
16416
16417        .artist-real-name {
16418            font-size: 0.9rem;
16419            opacity: 0.8;
16420            margin-top: 0.5rem;
16421        }
16422
16423        .releases-grid, .videos-grid, .news-grid {
16424            display: grid;
16425            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
16426            gap: 2rem;
16427            margin-top: 3rem;
16428        }
16429
16430        .release-card, .video-card, .news-card {
16431            background: white;
16432            border-radius: 20px;
16433            overflow: hidden;
16434            box-shadow: var(--shadow-light);
16435            transition: var(--transition);
16436            border: 2px solid transparent;
16437        }
16438
16439        .section-dark .release-card,
16440        .section-dark .video-card,
16441        .section-dark .news-card {
16442            background: rgba(255,255,255,0.05);
16443            border-color: rgba(255,255,255,0.1);
16444        }
16445
16446        .release-card:hover, .video-card:hover, .news-card:hover {
16447            transform: translateY(-10px);
16448            box-shadow: var(--shadow-heavy);
16449            border-color: var(--morvina-red);
16450        }
16451
16452        .release-image, .video-embed, .news-image {
16453            position: relative;
16454            overflow: hidden;
16455            background: var(--gradient-main);
16456            display: flex;
16457            align-items: center;
16458            justify-content: center;
16459            color: white;
16460            font-size: 4rem;
16461        }
16462
16463        .release-image { 
16464            aspect-ratio: 1;
16465            position: relative;
16466        }
16467        
16468        .release-image img,
16469        .news-image img {
16470            width: 100%;
16471            height: 100%;
16472            object-fit: cover;
16473        }
16474
16475        .video-embed { 
16476            padding-bottom: 56.25%; 
16477            height: 0;
16478            position: relative;
16479        }
16480
16481        .video-embed iframe {
16482            position: absolute;
16483            top: 0;
16484            left: 0;
16485            width: 100%;
16486            height: 100%;
16487        }
16488
16489        .news-image { height: 200px; }
16490
16491        .release-info, .video-info, .news-content {
16492            padding: 1.5rem;
16493        }
16494
16495        .section-dark .release-info,
16496        .section-dark .video-info,
16497        .section-dark .news-content {
16498            color: var(--text-light);
16499        }
16500
16501        .release-title, .video-title, .news-title {
16502            font-size: 1.3rem;
16503            margin-bottom: 0.5rem;
16504            font-weight: 700;
16505            color: var(--text-dark);
16506        }
16507
16508        .section-dark .release-title,
16509        .section-dark .video-title,
16510        .section-dark .news-title {
16511            color: var(--text-light);
16512        }
16513
16514        .release-description, .news-excerpt {
16515            font-size: 0.95rem;
16516            color: #666;
16517            margin-bottom: 1rem;
16518            line-height: 1.6;
16519        }
16520
16521        .section-dark .release-description,
16522        .section-dark .news-excerpt {
16523            color: rgba(255,255,255,0.8);
16524        }
16525
16526        .streaming-links {
16527            display: flex;
16528            gap: 0.5rem;
16529            flex-wrap: wrap;
16530        }
16531
16532        .streaming-link {
16533            padding: 8px 15px;
16534            background: var(--morvina-blue);
16535            color: white;
16536            text-decoration: none;
16537            border-radius: 20px;
16538            font-size: 0.8rem;
16539            font-weight: 700;
16540            transition: var(--transition);
16541            display: inline-block;
16542        }
16543
16544        .streaming-link:hover {
16545            background: var(--morvina-red);
16546            transform: translateY(-2px);
16547        }
16548
16549        .video-link, .read-more {
16550            display: inline-block;
16551            margin-top: 1rem;
16552            color: var(--morvina-blue);
16553            text-decoration: none;
16554            font-weight: 700;
16555            transition: var(--transition);
16556        }
16557
16558        .section-dark .video-link,
16559        .section-dark .read-more {
16560            /* --morvina-red (#D52B1E) on the ~5%-white-tinted dark card
16561               is ~3.60:1, below AA's 4.5:1 -- lightened for this
16562               dark-on-dark context (--morvina-red itself is fine as used
16563               elsewhere, e.g. the hover state on a white card). */
16564            color: #e26b62;
16565        }
16566
16567        .video-link:hover, .read-more:hover {
16568            color: var(--morvina-red);
16569        }
16570
16571        .view-all-btn {
16572            text-align: center;
16573            margin-top: 3rem;
16574        }
16575
16576        .view-all-btn a {
16577            display: inline-block;
16578  
16578          padding: 15px 35px;
16579            background: var(--morvina-blue);
16580            color: white;
16581            text-decoration: none;
16582            border-radius: 30px;
16583            font-weight: 700;
16584            transition: var(--transition);
16585        }
16586
16587        .view-all-btn a:hover {
16588            background: var(--morvina-red);
16589            transform: translateY(-3px);
16590        }
16591
16592        .loading-message {
16593            grid-column: 1 / -1;
16594            text-align: center;
16595            padding: 3rem;
16596            font-size: 1.2rem;
16597            color: #999;
16598        }
16599
16600        .bio-page {
16601            display: none;
16602            min-height: 100vh;
16603            padding-top: 80px;
16604            background: var(--background-light);
16605        }
16606
16607        .bio-page.active {
16608            display: block;
16609        }
16610
16611        .bio-header {
16612            background: var(--gradient-main);
16613            padding: 3rem 0;
16614            color: white;
16615            text-align: center;
16616        }
16617
16618        .back-button {
16619            display: inline-block;
16620            padding: 10px 25px;
16621            background: rgba(255,255,255,0.2);
16622            color: white;
16623            text-decoration: none;
16624            border-radius: 25px;
16625            margin-bottom: 1rem;
16626            transition: var(--transition);
16627            font-weight: 700;
16628        }
16629
16630        .back-button:hover {
16631            background: rgba(255,255,255,0.3);
16632            transform: translateY(-2px);
16633        }
16634
16635        .bio-content {
16636            max-width: 1000px;
16637            margin: -50px auto 0;
16638            position: relative;
16639            z-index: 10;
16640            padding: 0 20px 60px;
16641        }
16642
16643        .bio-card {
16644            background: white;
16645            border-radius: 20px;
16646            overflow: hidden;
16647            box-shadow: var(--shadow-heavy);
16648        }
16649
16650        .bio-image-section {
16651            padding: 3rem;
16652            text-align: center;
16653            background: linear-gradient(135deg, #e6f2ff 0%, #ffe6e6 100%);
16654        }
16655
16656        .bio-artist-image {
16657            width: 280px;
16658            height: 280px;
16659            border-radius: 50%;
16660            object-fit: cover;
16661            border: 6px solid white;
16662            box-shadow: var(--shadow-light);
16663        }
16664
16665        .bio-text-section {
16666            padding: 3rem;
16667        }
16668
16669        .bio-artist-title {
16670            text-align: center;
16671            margin-bottom: 2.5rem;
16672            padding-bottom: 2rem;
16673            border-bottom: 2px solid #f0f0f0;
16674        }
16675
16676        .bio-artist-title h1 {
16677            font-size: 2.8rem;
16678            margin-bottom: 0.8rem;
16679            font-family: 'Playfair Display', serif;
16680            color: var(--text-dark);
16681            font-weight: 700;
16682            letter-spacing: 2px;
16683        }
16684
16685        .bio-artist-title .stage-name {
16686            font-size: 1.4rem;
16687            color: var(--morvina-blue);
16688            font-weight: 700;
16689            margin-bottom: 1rem;
16690        }
16691
16692        .bio-artist-title .role {
16693            display: inline-block;
16694            background: var(--morvina-red);
16695            color: white;
16696            padding: 10px 25px;
16697            border-radius: 25px;
16698            font-size: 1rem;
16699            font-weight: 700;
16700        }
16701
16702        .bio-description {
16703            line-height: 2;
16704            font-size: 1.1rem;
16705            color: var(--text-dark);
16706        }
16707
16708        .bio-description p {
16709            margin-bottom: 1.5rem;
16710            text-align: justify;
16711        }
16712
16713        .main-footer {
16714            background: var(--primary-color);
16715            color: var(--text-light);
16716            padding: 3rem 0 1rem;
16717            text-align: center;
16718        }
16719
16720        .social-links {
16721            display: flex;
16722            justify-content: center;
16723            gap: 1rem;
16724            margin-bottom: 2rem;
16725        }
16726
16727        .social-link {
16728            width: 50px;
16729            height: 50px;
16730            border-radius: 50%;
16731            background: var(--morvina-blue);
16732            color: var(--text-light);
16733            display: flex;
16734            align-items: center;
16735            justify-content: center;
16736            text-decoration: none;
16737            font-size: 1.2rem;
16738            transition: var(--transition);
16739        }
16740
16741        .social-link:hover {
16742            background: var(--morvina-red);
16743            transform: translateY(-3px);
16744        }
16745
16746        @media (max-width: 768px) {
16747            .mobile-menu-toggle { display: block; }
16748            .lang-toggle { padding: 5px; }
16749            .lang-toggle button { padding: 6px 10px; font-size: 0.75rem; }
16750            .nav-menu {
16751                position: fixed;
16752                top: 70px;
16753                left: 0;
16754                right: 0;
16755                background: var(--primary-color);
16756                flex-direction: column;
16757                padding: 2rem;
16758                transform: translateY(-100%);
16759                opacity: 0;
16760                visibility: hidden;
16761                transition: var(--transition);
16762            }
16763            .nav-menu.active {
16764                transform: translateY(0);
16765                opacity: 1;
16766                visibility: visible;
16767            }
16768            .artists-gallery {
16769                grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
16770                gap: 1.5rem;
16771            }
16772            .releases-grid, .videos-grid, .news-grid {
16773                grid-template-columns: 1fr;
16774            }
16775            .bio-artist-image {
16776                width: 200px;
16777                height: 200px;
16778            }
16779            .bio-artist-title h1 {
16780                font-size: 2rem;
16781            }
16782            .bio-text-section {
16783                padding: 2rem 1.5rem;
16784            }
16785        }
16786    
16787    .ev-nw-badge{position:fixed;bottom:72px;right:20px;z-index:9999;display:inline-flex;align-items:center;gap:5px;padding:8px 14px;background:rgba(2,2,8,.9);border:1px solid rgba(255,255,255,.14);border-radius:100px;font-size:.68rem;font-weight:600;color:rgba(255,255,255,.55);text-decoration:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);letter-spacing:.06em;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}
16788.ev-nw-badge:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(2,2,8,.97)}
16789.ev-nw-badge-mark{width:14px;
16789height:14px;display:grid;grid-template-columns:1fr 1fr;gap:2px;flex-shrink:0}
16790.ev-nw-badge-mark span{background:currentColor;border-radius:2px;display:block}
16791  </style>
16792
16793<a href="https://echovira.com" class="ev-nw-badge" target="_blank" rel="noopener" title="EchoVira Music Network">
16794  <div class="ev-nw-badge-mark"><span></span><span></span><span></span><span></span></div>
16795  EchoVira
16796</a>
16797
16798<nav class="main-nav" id="mainNav">
16799    <div class="nav-container">
16800        <a href="#home" class="logo">
16801            <img src="https://media.echovira.com/echovira/morvina_logo.png" alt="Morvina"
16802                srcset="https://media.echovira.com/echovira/morvina_logo-400.webp 400w, https://media.echovira.com/echovira/morvina_logo-800.webp 800w, https://media.echovira.com/echovira/morvina_logo-full.webp 1024w"
16803                sizes="50px" width="1024" height="1024" decoding="async">
16804        </a>
16805        <ul class="nav-menu" id="navMenu">
16806            <li class="lang-ru"><a href="#home">Главная</a></li>
16807            <li class="lang-ru"><a href="#about">О группе</a></li>
16808            <li class="lang-ru"><a href="#artists">Артисты</a></li>
16809            <li class="lang-ru"><a href="#releases">Релизы</a></li>
16810            <li class="lang-ru"><a href="#videos">Видео</a></li>
16811            <li class="lang-ru"><a href="#news">Новости</a></li>
16812            <li class="lang-en"><a href="#home">Home</a></li>
16813            <li class="lang-en"><a href="#about">About</a></li>
16814            <li class="lang-en"><a href="#artists">Artists</a></li>
16815            <li class="lang-en"><a href="#releases">Releases</a></li>
16816            <li class="lang-en"><a href="#videos">Videos</a></li>
16817            <li class="lang-en"><a href="#news">News</a></li>
16818        </ul>
16819        <div class="lang-toggle">
16820            <button onclick="window.setLanguage&&setLanguage('ru')" class="lang-btn-ru active" data-lang="ru">Русский</button>
16821            <button onclick="window.setLanguage&&setLanguage('en')" class="lang-btn-en" data-lang="en">English</button>
16822        </div>
16823        <button class="mobile-menu-toggle" id="mobileToggle">☰</button>
16824    </div>
16825</nav>
16826
16827<span id="main-content" tabindex="-1"></span>
16828
16829<section class="hero-section" id="home">
16830    
16831    
16832    <div class="hero-content">
16833        <h1 class="hero-title">MORVINA</h1>
16834        <p class="hero-subtitle lang-ru">Российская Группа | Инди-Рок & Альтернатива | 12 Талантливых Артистов | Международное Звучание</p>
16835        <p class="hero-subtitle lang-en">Russian Band | Indie Rock & Alternative | 12 Talented Artists | International Sound</p>
16836        <a href="#about" class="cta-button lang-ru">Откройте Нашу Музыку</a>
16837        <a href="#about" class="cta-button lang-en">Discover Our Music</a>
16838    </div>
16839</section>
16840
16841<section class="section" id="about">
16842    <div class="container">
16843        <h2 class="section-title lang-ru">О Группе Morvina</h2>
16844        <h2 class="section-title lang-en">About Morvina</h2>
16845        <div class="about-content">
16846            <p class="lang-ru">
16847                <strong>Morvina</strong> — больше, чем просто группа. Morvina представляет новую волну <strong>современной российской музыки</strong>. Мы идеально сочетаем <strong>инди-рок мелодии</strong> и <strong>элементы русской песенной традиции</strong> с современной <strong>электронной музыкой</strong>, <strong>альтернативным роком</strong> и <strong>экспериментальными звуками</strong>, создавая уникальное звучание, которое преодолевает культурные границы и трогает сердца.
16848            </p>
16849            <p class="lang-ru">
16850                Сформированная 12 талантливыми музыкантами — <strong>вокалистами</strong>, <strong>мультиинструменталистами</strong>, <strong>композиторами и поэтами</strong> — Morvina представляет разнообразие и креативность современной <strong>российской музыки</strong>. Мы черпаем вдохновение из <strong>инди-рока</strong>, <strong>электро-попа</strong>, <strong>джаза</strong>, <strong>соула</strong> и <strong>альтернативной музыки</strong>, создавая произведения <strong>мирового класса</strong> с <strong>аутентичной российской идентичностью</strong>.
16851            </p>
16852            <p class="lang-ru">
16853                От <strong>живых выступлений</strong> и <strong>музыкальных фестивалей</strong> в Москве и по всей России до выпуска <strong>цифровых альбомов</strong> и <strong>синглов</strong> на всех стриминговых платформах (Spotify, Apple Music, YouTube Music), Morvina строит музыкальное наследие, которое чествует богатое музыкальное наследие России, принимая мировые инновации.
16854            </p>
16855            
16856            <p class="lang-en">
16857                <strong>Morvina</strong> — more than just a band, Morvina represents a new wave of <strong>contemporary Russian music</strong>. We perfectly blend <strong>indie rock melodies</strong> and <strong>elements of Russian song tradition</strong> with modern <strong>electronic music</strong>, <strong>alternative rock</strong>, and <strong>experimental sounds</strong> to create a unique sound that transcends cultural boundaries and touches hearts.
16858            </p>
16859            <p class="lang-en">
16860                Formed by 12 talented musicians — <strong>vocalists</strong>, <strong>multi-instrumentalists</strong>, <strong>composers and lyricists</strong> — Morvina represents the diversity and creativity of contemporary <strong>Russian music</strong>. We draw inspiration from <strong>indie rock</strong>, <strong>electro-pop</strong>, <strong>jazz</strong>, <strong>soul</strong>, and <strong>alternative music</strong> to produce works with <strong>world-class quality</strong> and <strong>authentic Russian identity</strong>.
16861            </p>
16862            <p class="lang-en">
16863                From <strong>live performances</strong> and <strong>music festivals</strong> in Moscow and across Russia to releasing <strong>digital albums</strong> and <strong>singles</strong> on all streaming platforms (Spotify, Apple Music, YouTube Music), Morvina is building a musical legacy that honors Russia's rich musical heritage while embracing global innovation.
16864            </p>
16865        </div>
16866    </div>
16867</section>
16868
16869<section class="section section-dark" id="artists">
16870    <div class="container">
16871        <h2 class="section-title lang-ru">Артисты</h2>
16872        <h2 class="section-title lang-en">The Artists</h2>
16873        <div class="artists-gallery" id="artistsGallery">
16874<div class="artist-card" data-artist-id="alexei-morozov" style="cursor:pointer">
16875            <div class="artist-image-wrapper">
16876                <img src="https://media.echovira.com/morvina/morvina_alexei_morozov_male_singer_portrait_1.png" alt="Alexei Morozov" class="artist-image"
16877                srcset="https://media.echovira.com/morvina/morvina_alexei_morozov_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_alexei_morozov_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_alexei_morozov_male_singer_portrait_1-full.
16877webp 1024w"
16878                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
16879                <div class="artist-overlay">
16880                    <div class="artist-stage-name">Alexei</div>
16881                    <div class="artist-role-badge lang-ru">Вокалист</div>
16882                    <div class="artist-role-badge lang-en">Male Singer</div>
16883                    <div class="artist-real-name">Alexei Morozov • 24 лет / years</div>
16884                </div>
16885            </div>
16886        </div><div class="artist-card" data-artist-id="anastasia-kuznetsova" style="cursor:pointer">
16887            <div class="artist-image-wrapper">
16888                <img src="https://media.echovira.com/morvina/morvina_anastasia_kuznetsova_female_singer_portrait_0.png" alt="Anastasia Kuznetsova" class="artist-image"
16889                srcset="https://media.echovira.com/morvina/morvina_anastasia_kuznetsova_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/morvina/morvina_anastasia_kuznetsova_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/morvina/morvina_anastasia_kuznetsova_female_singer_portrait_0-full.webp 1024w"
16890                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
16891                <div class="artist-overlay">
16892                    <div class="artist-stage-name">Anya</div>
16893                    <div class="artist-role-badge lang-ru">Вокалистка</div>
16894                    <div class="artist-role-badge lang-en">Female Singer</div>
16895                    <div class="artist-real-name">Anastasia Kuznetsova • 25 лет / years</div>
16896                </div>
16897            </div>
16898        </div><div class="artist-card" data-artist-id="daria-mikhailova" style="cursor:pointer">
16899            <div class="artist-image-wrapper">
16900                <img src="https://media.echovira.com/morvina/morvina_daria_mikhailova_female_singer_portrait_1.png" alt="Daria Mikhailova" class="artist-image"
16901                srcset="https://media.echovira.com/morvina/morvina_daria_mikhailova_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_daria_mikhailova_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_daria_mikhailova_female_singer_portrait_1-full.webp 1024w"
16902                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
16903                <div class="artist-overlay">
16904                    <div class="artist-stage-name">Dasha</div>
16905                    <div class="artist-role-badge lang-ru">Вокалистка</div>
16906                    <div class="artist-role-badge lang-en">Female Singer</div>
16907                    <div class="artist-real-name">Daria Mikhailova • 24 лет / years</div>
16908                </div>
16909            </div>
16910        </div><div class="artist-card" data-artist-id="dmitry-volkov" style="cursor:pointer">
16911            <div class="artist-image-wrapper">
16912                <img src="https://media.echovira.com/morvina/morvina_dmitry_volkov_male_singer_portrait_1.png" alt="Dmitry Volkov" class="artist-image"
16913                srcset="https://media.echovira.com/morvina/morvina_dmitry_volkov_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_dmitry_volkov_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_dmitry_volkov_male_singer_portrait_1-full.webp 1024w"
16914                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
16915                <div class="artist-overlay">
16916                    <div class="artist-stage-name">Dmitry</div>
16917                    <div class="artist-role-badge lang-ru">Вокалист</div>
16918                    <div class="artist-role-badge lang-en">Male Singer</div>
16919                    <div class="artist-real-name">Dmitry Volkov • 25 лет / years</div>
16920                </div>
16921            </div>
16922        </div><div class="artist-card" data-artist-id="elena-ivanova" style="cursor:pointer">
16923            <div class="artist-image-wrapper">
16924                <img src="https://media.echovira.com/morvina/morvina_elena_ivanova_female_singer_portrait_1.png" alt="Elena Ivanova" class="artist-image"
16925                srcset="https://media.echovira.com/morvina/morvina_elena_ivanova_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_elena_ivanova_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_elena_ivanova_female_singer_portrait_1-full.
16925webp 1024w"
16926                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
16927                <div class="artist-overlay">
16928                    <div class="artist-stage-name">Lena</div>
16929                    <div class="artist-role-badge lang-ru">Вокалистка</div>
16930                    <div class="artist-role-badge lang-en">Female Singer</div>
16931                    <div class="artist-real-name">Elena Ivanova • 26 лет / years</div>
16932                </div>
16933            </div>
16934        </div><div class="artist-card" data-artist-id="irina-belova" style="cursor:pointer">
16935            <div class="artist-image-wrapper">
16936                <img src="https://media.echovira.com/morvina/morvina_irina_belova_multi_instrumentalist_portrait_0.png" alt="Irina Belova" class="artist-image"
16937                srcset="https://media.echovira.com/morvina/morvina_irina_belova_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/morvina/morvina_irina_belova_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/morvina/morvina_irina_belova_multi_instrumentalist_portrait_0-full.webp 1024w"
16938                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
16939                <div class="artist-overlay">
16940                    <div class="artist-stage-name">Irina</div>
16941                    <div class="artist-role-badge lang-ru">Мультиинструменталистка</div>
16942                    <div class="artist-role-badge lang-en">Multi-Instrumentalist</div>
16943                    <div class="artist-real-name">Irina Belova • 25 лет / years</div>
16944                </div>
16945            </div>
16946        </div><div class="artist-card" data-artist-id="ivan-smirnov" style="cursor:pointer">
16947            <div class="artist-image-wrapper">
16948                <img src="https://media.echovira.com/morvina/morvina_ivan_smirnov_male_singer_portrait_1.png" alt="Ivan Smirnov" class="artist-image"
16949                srcset="https://media.echovira.com/morvina/morvina_ivan_smirnov_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_ivan_smirnov_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_ivan_smirnov_male_singer_portrait_1-full.webp 1024w"
16950                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
16951                <div class="artist-overlay">
16952                    <div class="artist-stage-name">Ivan</div>
16953                    <div class="artist-role-badge lang-ru">Вокалист</div>
16954                    <div class="artist-role-badge lang-en">Male Singer</div>
16955                    <div class="artist-real-name">Ivan Smirnov • 26 лет / years</div>
16956                </div>
16957            </div>
16958        </div><div class="artist-card" data-artist-id="ksenia-romanova" style="cursor:pointer">
16959            <div class="artist-image-wrapper">
16960                <img src="https://media.echovira.com/morvina/morvina_ksenia_romanova_female_singer_portrait_0.png" alt="Ksenia Romanova" class="artist-image"
16961                srcset="https://media.echovira.com/morvina/morvina_ksenia_romanova_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/morvina/morvina_ksenia_romanova_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/morvina/morvina_ksenia_romanova_female_singer_portrait_0-full.webp 1024w"
16962                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
16963                <div class="artist-overlay">
16964                    <div class="artist-stage-name">Ksenia</div>
16965                    <div class="artist-role-badge lang-ru">Вокалистка</div>
16966                    <div class="artist-role-badge lang-en">Female Singer</div>
16967                    <div class="artist-real-name">Ksenia Romanova • 23 лет / years</div>
16968                </div>
16969            </div>
16970        </div><div class="artist-card" data-artist-id="nikolai-petrov" style="cursor:pointer">
16971            <div class="artist-image-wrapper">
16972                <img src="https://media.echovira.com/morvina/morvina_nikolai_petrov_male_singer_portrait_0.png" alt="Nikolai Petrov" class="artist-image"
16973                srcset="https://media.echovira.com/morvina/morvina_nikolai_petrov_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/morvina/morvina_nikolai_petrov_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/morvina/morvina_nikolai_petrov_male_singer_portrait_0-full.
16973webp 1024w"
16974                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
16975                <div class="artist-overlay">
16976                    <div class="artist-stage-name">Nikolai</div>
16977                    <div class="artist-role-badge lang-ru">Вокалист</div>
16978                    <div class="artist-role-badge lang-en">Male Singer</div>
16979                    <div class="artist-real-name">Nikolai Petrov • 27 лет / years</div>
16980                </div>
16981            </div>
16982        </div><div class="artist-card" data-artist-id="sergei-orlov" style="cursor:pointer">
16983            <div class="artist-image-wrapper">
16984                <img src="https://media.echovira.com/morvina/morvina_sergei_orlov_male_singer_portrait_1.png" alt="Sergei Orlov" class="artist-image"
16985                srcset="https://media.echovira.com/morvina/morvina_sergei_orlov_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_sergei_orlov_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_sergei_orlov_male_singer_portrait_1-full.webp 1024w"
16986                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
16987                <div class="artist-overlay">
16988                    <div class="artist-stage-name">Sergei</div>
16989                    <div class="artist-role-badge lang-ru">Вокалист</div>
16990                    <div class="artist-role-badge lang-en">Male Singer</div>
16991                    <div class="artist-real-name">Sergei Orlov • 23 лет / years</div>
16992                </div>
16993            </div>
16994        </div><div class="artist-card" data-artist-id="svetlana-pavlova" style="cursor:pointer">
16995            <div class="artist-image-wrapper">
16996                <img src="https://media.echovira.com/morvina/morvina_svetlana_pavlova_composer_lyricist_portrait_0.png" alt="Svetlana Pavlova" class="artist-image"
16997                srcset="https://media.echovira.com/morvina/morvina_svetlana_pavlova_composer_lyricist_portrait_0-400.webp 400w, https://media.echovira.com/morvina/morvina_svetlana_pavlova_composer_lyricist_portrait_0-800.webp 800w, https://media.echovira.com/morvina/morvina_svetlana_pavlova_composer_lyricist_portrait_0-full.webp 1024w"
16998                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
16999                <div class="artist-overlay">
17000                    <div class="artist-stage-name">Svetlana</div>
17001                    <div class="artist-role-badge lang-ru">Композитор и Поэт</div>
17002                    <div class="artist-role-badge lang-en">Composer & Lyricist</div>
17003                    <div class="artist-real-name">Svetlana Pavlova • 26 лет / years</div>
17004                </div>
17005            </div>
17006        </div><div class="artist-card" data-artist-id="viktoria-sokolova" style="cursor:pointer">
17007            <div class="artist-image-wrapper">
17008                <img src="https://media.echovira.com/morvina/morvina_viktoria_sokolova_female_singer_portrait_1.png" alt="Viktoria Sokolova" class="artist-image"
17009                srcset="https://media.echovira.com/morvina/morvina_viktoria_sokolova_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_viktoria_sokolova_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_viktoria_sokolova_female_singer_portrait_1-full.webp 1024w"
17010                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
17011                <div class="artist-overlay">
17012                    <div class="artist-stage-name">Vika</div>
17013                    <div class="artist-role-badge lang-ru">Вокалистка</div>
17014                    <div class="artist-role-badge lang-en">Female Singer</div>
17015                    <div class="artist-real-name">Viktoria Sokolova • 27 лет / years</div>
17016                </div>
17017            </div>
17018        </div>
17019</div>
17020    </div>
17021</section>
17022
17023<section class="section" id="releases">
17024    <div class="container">
17025        <h2 class="section-title lang-ru">Последние Релизы</h2>
17026        <h2 class="section-title lang-en">Latest Releases</h2>
17027        <div class="releases-grid" id="releasesGrid">
17028        <div class="release-card">
17029            <div class="release-image">🎵</div>
17030            <div class="release-info">
17031                <h3 class="release-title lang-ru">Morvina - Первый Сингл</h3>
17032                <h3 class="release-title lang-en">Morvina - First Single</h3>
17033                <p class="release-description lang-ru">Слушайте музыку Morvina в социальных сетях</p>
17034                <p class="release-description lang-en">Listen to Morvina's music on social media</p>
17035                <div class="streaming-links">
17036                    <a href="https://www.youtube.com/@MorvinaOfficial" target="_blank" class="streaming-link">YouTube</a>
17037                    <a href="https://www.instagram.com/morvinaofficial/" target="_blank" class="streaming-link">Instagram</a>
17038                    <a href="https://www.tiktok.com/@morvinaofficial" target="_blank" class="streaming-link">TikTok</a>
17039                </div>
17040            </div>
17041        </div>
17042    </div>
17043    </div>
17044</section>
17045
17046<section class="section section-dark" id="videos">
17047    <div class="container">
17048        <h2 class="section-title lang-ru">Музыкальные Видео</h2>
17049        <h2 class="section-title lang-en">Music Videos</h2>
17050        <div class="videos-grid" id="videosGrid">
17051        <div class="video-card">
17052            <div class="video-embed">📹</div>
17053            <div class="video-info">
17054                <h3 class="video-title lang-ru">Morvina - Музыкальное Видео</h3>
17055                <h3 class="video-title lang-en">Morvina - Music Video</h3>
17056                <p class="lang-ru">Смотрите наши последние клипы и живые выступления на YouTube</p>
17057                <p class="lang-en">Watch our latest music videos and live performances on YouTube</p>
17058                <a href="https://www.youtube.com/@MorvinaOfficial" target="_blank" class="video-link lang-ru">Смотреть на YouTube →</a>
17059                <a href="https://www.youtube.com/@MorvinaOfficial" target="_blank" class="video-link lang-en">Watch on YouTube →</a>
17060            </div>
17061        </div>
17062        <div class="video-card">
17063            <div class="video-embed">🎬</div>
17064            <div class="video-info">
17065                <h3 class="video-title lang-ru">Короткие Видео</h3>
17066                <h3 class="video-title lang-en">Short Videos</h3>
17067                <p class="lang-ru">Следите за закулисьем и музыкальными отрывками в TikTok и Instagram</p>
17068                <p class="lang-en">Follow our behind-the-scenes and music clips on TikTok and Instagram</p>
17069                <a href="https://www.tiktok.com/@morvinaofficial" target="_blank" class="video-link lang-ru">Смотреть в TikTok →</a>
17070                <a href="https://www.tiktok.com/@morvinaofficial" target="_blank" class="video-link lang-en">Watch on TikTok →</a>
17071            </div>
17072        </div>
17073    </div>
17074        <div class="view-all-btn">
17075            <a href="https://www.youtube.com/@MorvinaOfficial" target="_blank" class="lang-ru">Смотреть Больше на YouTube</a>
17076            <a href="https://www.youtube.com/@MorvinaOfficial" target="_blank" class="lang-en">Watch More on YouTube</a>
17077        </div>
17078    </div>
17079</section>
17080
17081<section class="section" id="news">
17082    <div class="container">
17083        <h2 class="section-title lang-ru">Последние Новости</h2>
17084        <h2 class="section-title lang-en">Latest News</h2>
17085        <div class="news-grid" id="newsGrid">
17086        <div class="news-card">
17087            <div class="news-image">📰</div>
17088            <div class="news-content">
17089                <h3 class="news-title lang-ru">Добро пожаловать в мир Morvina</h3>
17090                <h3 class="news-title lang-en">Welcome to Morvina's World</h3>
17091                <p class="news-excerpt lang-ru">Следите за нами в социальных сетях для последних новостей о группе, новых релизах и концертах</p>
17092                <p class="news-excerpt lang-en">Follow us on social media for latest news about the band, new releases, and live concerts</p>
17093                <a href="https://www.instagram.com/morvinaofficial/" target="_blank" class="read-more lang-ru">Следить в Instagram →</a>
17094                <a href="https://www.instagram.com/morvinaofficial/" target="_blank" class="read-more lang-en">Follow on Instagram →</a>
17095            </div>
17096        </div>
17097        <div class="news-card">
17098            <div class="news-image">🎤</div>
17099            <div class="news-content">
17100                <h3 class="news-title lang-ru">Познакомьтесь с Артистами</h3>
17101                <h3 class="news-title lang-en">Meet the Artists</h3>
17102                <p class="news-excerpt lang-ru">Узнайте истории наших 12 артистов и смотрите моменты репетиций и концертов на наших страницах</p>
17103                <p class="news-excerpt lang-en">Discover the stories of our 12 artists and watch rehearsal and concert moments on our pages</p>
17104                <a href="https://facebook.com/morvinaofficial" target="_blank" class="read-more lang-ru">Посетить Нашу Страницу →</a>
17105                <a href="https://facebook.com/morvinaofficial" target="_blank" class="read-more lang-en">Visit Our Page →</a>
17106            </div>
17107        </div>
17108    </div>
17109    </div>
17110</section>
17111
17112<footer class="main-footer">
17113    <div class="container">
17114        <div class="social-links">
17115            <a href="https://www.youtube.com/@MorvinaOfficial" target="_blank" class="social-link">▶</a>
17116            <a href="https://www.instagram.com/morvinaofficial/" target="_blank" class="social-link">📷</a>
17117            <a href="https://www.tiktok.com/@morvinaofficial" target="_blank" class="social-link">🎵</a>
17118            <a href="https://facebook.com/morvinaofficial" target="_blank" class="social-link">👥</a>
17119        </div>
17120        <p class="lang-ru">&copy;
17120 2025 Morvina. Все права защищены.</p>
17121        <p class="lang-en">&copy; 2025 Morvina. All rights reserved.</p>
17122    </div>
17123</footer>
17124
17125
17126
17127
17128<div id="bioPages">
17129<div id="bio-alexei-morozov" class="bio-page">
17130            <div class="bio-header">
17131                <div class="container">
17132                    <a href="#artists" data-action="back" class="back-button lang-ru">← Назад к Артистам</a>
17133                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
17134                </div>
17135            </div>
17136            
17137            <div class="bio-content">
17138                <div class="bio-card">
17139                    <div class="bio-image-section">
17140                        <img src="https://media.echovira.com/morvina/morvina_alexei_morozov_male_singer_portrait_1.png" alt="Alexei Morozov" class="bio-artist-image"
17141                srcset="https://media.echovira.com/morvina/morvina_alexei_morozov_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_alexei_morozov_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_alexei_morozov_male_singer_portrait_1-full.webp 1024w"
17142                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
17143                    </div>
17144                    <div class="bio-text-section">
17145                        <div class="bio-artist-title">
17146                            <h1>Alexei Morozov</h1>
17147                            <div class="stage-name">"Alexei" • 24 лет / years</div>
17148                            <div class="role lang-ru">Вокалист</div>
17149                            <div class="role lang-en">Male Singer</div>
17150                        </div>
17151                        <div class="bio-description lang-ru">
17152                            <p>Знакомьтесь с Алексеем Морозовым — Алексей, 24 года, новый мужской вокалист Morvina. Молодая искра: игривый, но сильный вокальный тон, добавляющий теплоту и остроту.</p><p>Как фронтмен Morvina, его тембр находится между ярким и резонансным, легко перемещаясь по регистрам с гибким фразированием и контролируемой динамикой. Он предпочитает разговорное фразирование и быстрые динамические сдвиги, которые обостряют припевы и смягчают интимные моменты.</p><p>На сцене его присутствие притягивает группу к плотным грувам и поднимает песни в широкоэкранные припевы. Алексей превращает мелодии в запоминающиеся хуки, и его вокальный выбор формирует студийные текстуры группы и живой импульс.</p>
17153                        </div>
17154                        <div class="bio-description lang-en">
17155                            <p>Meet Alexei Morozov — Alexei, 24, Morvina's new male singer. Youthful spark: playful yet strong vocal tone that adds warmth and bite.</p><p>As Morvina's frontman, his timbre sits bright but resonant, moving comfortably across registers with agile phrasing and controlled dynamics. He favors conversational phrasing and quick dynamic shifts that sharpen choruses and soften intimate moments.</p><p>On stage his presence pulls the band into tight grooves and lifts songs into widescreen choruses. Alexei turns melodies into memorable hooks and his vocal choices shape the band's studio textures and live momentum.</p>
17156                        </div>
17157                    </div>
17158                </div>
17159            </div>
17160        </div>
17161<div id="bio-anastasia-kuznetsova" class="bio-page">
17162            <div class="bio-header">
17163                <div class="container">
17164                    <a href="#artists" data-action="back" class="back-button lang-ru">← Назад к Артистам</a>
17165                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
17166                </div>
17167            </div>
17168            
17169            <div class="bio-content">
17170                <div class="bio-card">
17171                    <div class="bio-image-section">
17172                        <img src="https://media.echovira.com/morvina/morvina_anastasia_kuznetsova_female_singer_portrait_0.png" alt="Anastasia Kuznetsova" class="bio-artist-image"
17173                srcset="https://media.echovira.com/morvina/morvina_anastasia_kuznetsova_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/morvina/morvina_anastasia_kuznetsova_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/morvina/morvina_anastasia_kuznetsova_female_singer_portrait_0-full.
17173webp 1024w"
17174                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
17175                    </div>
17176                    <div class="bio-text-section">
17177                        <div class="bio-artist-title">
17178                            <h1>Anastasia Kuznetsova</h1>
17179                            <div class="stage-name">"Anya" • 25 лет / years</div>
17180                            <div class="role lang-ru">Вокалистка</div>
17181                            <div class="role lang-en">Female Singer</div>
17182                        </div>
17183                        <div class="bio-description lang-ru">
17184                            <p>Встречайте Анастасию Кузнецову — Аня, 25 лет, новая женская вокалистка Morvina. Командная вокалистка с парящим диапазоном и выразительным контролем.</p><p>Ее теплый, резонирующий тембр и широкий диапазон позволяют ей переходить от интимного фразирования к мощным кульминациям, используя нюансированную динамику и сценическое присутствие, сформированное инди-роком и кинематографическими поп-влияниями.</p><p>Как ведущий голос Morvina, Аня формирует мелодии и раскрашивает аранжировки, поднимая припевы и заземляя более тихие пассажи. В живом исполнении ее фразирование и динамический контроль создают моменты напряжения и релиза, которые движут энергией группы.</p>
17185                        </div>
17186                        <div class="bio-description lang-en">
17187                            <p>Meet Anastasia Kuznetsova — Anya, 25, the new female singer of Morvina. A commanding vocalist with a soaring range and expressive control.</p><p>Her warm, resonant timbre and wide range let her move from intimate phrasing to powerful climaxes, using nuanced dynamics and a stage presence shaped by indie-rock and cinematic-pop influences.</p><p>As Morvina's lead voice, Anya shapes melodies and colors arrangements, lifting choruses and grounding quieter passages. Live, her phrasing and dynamic control create tension-and-release moments that drive the band's energy.</p>
17188                        </div>
17189                    </div>
17190                </div>
17191            </div>
17192        </div>
17193<div id="bio-daria-mikhailova" class="bio-page">
17194            <div class="bio-header">
17195                <div class="container">
17196                    <a href="#artists" data-action="back" class="back-button lang-ru">← Назад к Артистам</a>
17197                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
17198                </div>
17199            </div>
17200            
17201            <div class="bio-content">
17202                <div class="bio-card">
17203                    <div class="bio-image-section">
17204                        <img src="https://media.echovira.com/morvina/morvina_daria_mikhailova_female_singer_portrait_1.png" alt="Daria Mikhailova" class="bio-artist-image"
17205                srcset="https://media.echovira.com/morvina/morvina_daria_mikhailova_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_daria_mikhailova_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_daria_mikhailova_female_singer_portrait_1-full.webp 1024w"
17206                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
17207                    </div>
17208                    <div class="bio-text-section">
17209                        <div class="bio-artist-title">
17210                            <h1>Daria Mikhailova</h1>
17211                            <div class="stage-name">"Dasha" • 24 лет / years</div>
17212                            <div class="role lang-ru">Вокалистка</div>
17213                            <div class="role lang-en">Female Singer</div>
17214                        </div>
17215                        <div class="bio-description lang-ru">
17216                            <p>Встречайте Дашу — Дарья Михайлова, 24 года, голос Morvina. Элегантная балладная певица, которая привносит эмоциональную глубину.</p><p>Ее тембр сочетает теплые низкие тона с чистым верхним регистром; ее диапазон, фразирование и контролируемая динамика позволяют мелодиям дышать и задерживаться. На сцене она баÐ
17216»Ð°Ð½ÑÐ¸Ñ€ÑƒÐµÑ‚ между тихой сдержанностью и интенсивными моментами, используя фразирование, чтобы привлечь слушателей к каждой линии.</p><p>Как ведущая певица Morvina, Даша формирует звучание группы интимными вокалами, которые поднимают аранжировки и обостряют живую энергию.</p>
17217                        </div>
17218                        <div class="bio-description lang-en">
17219                            <p>Meet Dasha — Daria Mikhailova, 24, the voice of Morvina. An elegant ballad singer who brings emotional depth.</p><p>Her timbre blends warm low tones with a clear upper register; her range, phrasing and controlled dynamics let melodies breathe and linger. On stage she balances quiet restraint and intense moments, using phrasing to draw listeners into each line.</p><p>As Morvina's lead singer, Dasha shapes the band's sound with intimate vocals that lift arrangements and sharpen the live energy.</p>
17220                        </div>
17221                    </div>
17222                </div>
17223            </div>
17224        </div>
17225<div id="bio-dmitry-volkov" class="bio-page">
17226            <div class="bio-header">
17227                <div class="container">
17228                    <a href="#artists" data-action="back" class="back-button lang-ru">← Назад к Артистам</a>
17229                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
17230                </div>
17231            </div>
17232            
17233            <div class="bio-content">
17234                <div class="bio-card">
17235                    <div class="bio-image-section">
17236                        <img src="https://media.echovira.com/morvina/morvina_dmitry_volkov_male_singer_portrait_1.png" alt="Dmitry Volkov" class="bio-artist-image"
17237                srcset="https://media.echovira.com/morvina/morvina_dmitry_volkov_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_dmitry_volkov_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_dmitry_volkov_male_singer_portrait_1-full.webp 1024w"
17238                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
17239                    </div>
17240                    <div class="bio-text-section">
17241                        <div class="bio-artist-title">
17242                            <h1>Dmitry Volkov</h1>
17243                            <div class="stage-name">"Dmitry" • 25 лет / years</div>
17244                            <div class="role lang-ru">Вокалист</div>
17245                            <div class="role lang-en">Male Singer</div>
17246                        </div>
17247                        <div class="bio-description lang-ru">
17248                            <p>Представляем Дмитрия (сценическое имя Дмитрий Волков), 25 лет — мужской вокалист Morvina. Фронтмен с командным сценическим присутствием и мощными вокалами.</p><p>Его глубокий, резонирующий тембр и широкий диапазон формируют мелодическое ядро Morvina, в то время как точное фразирование и динамический контроль толкают песни от интимных куплетов к взрывным припевам.</p><p>На сцене его движение и тайминг направляют живой импульс группы, делая аранжировки немедленными и интенсивными. Как вокалист, он балансирует теплый низкий регистр с парящими верхними нотами, четкой дикцией и нюансированной динамикой, которая выявляет детали песен.</p>
17249                        </div>
17250                        <div class="bio-description lang-en">
17251                            <p>Introducing Dmitry (stage name Dmitry Volkov), 25 — male singer of Morvina. Frontman with commanding stage presence and powerful vocals.</p><p>His deep, resonant timbre and wide range shape Morvina's melodic core, while precise phrasing and dynamic control push songs from intimate verses to explosive choruses.</p><p>On stage his movement and timing steer the band's live momentum, making arrangements feel immediate and intense. As vocalist he balances a warm low register with soaring top notes, clear diction, and nuanced dynamics that bring out song details.</p>
17252                        </div>
17253                    </div>
17254                </div>
17255            </div>
17256        </div>
17257<div id="bio-elena-ivanova" class="bio-page">
17258            <div class="bio-header">
17259                <div class="container">
17260                    <a href="#artists" data-action="back" class="back-button lang-ru">← Назад к Артистам</a>
17261                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
17262                </div>
17263            </div>
17264            
17265            <div class="bio-content">
17266                <div class="bio-card">
17267                    <div class="bio-image-section">
17268                        <img src="https://media.echovira.com/morvina/morvina_elena_ivanova_female_singer_portrait_1.png" alt="Elena Ivanova" class="bio-artist-image"
17269                srcset="https://media.echovira.com/morvina/morvina_elena_ivanova_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_elena_ivanova_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_elena_ivanova_female_singer_portrait_1-full.
17269webp 1024w"
17270                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
17271                    </div>
17272                    <div class="bio-text-section">
17273                        <div class="bio-artist-title">
17274                            <h1>Elena Ivanova</h1>
17275                            <div class="stage-name">"Lena" • 26 лет / years</div>
17276                            <div class="role lang-ru">Вокалистка</div>
17277                            <div class="role lang-en">Female Singer</div>
17278                        </div>
17279                        <div class="bio-description lang-ru">
17280                            <p>Встречайте Елену Иванову — сценическое имя Лена, 26 лет, голос Morvina. Душевное сердце с теплыми, глубоко эмоциональными вокалами.</p><p>Присутствие Лены формирует звучание Morvina: ее фразирование и динамический контроль превращают тихие моменты в интимность и приводят припевы к полному групповому драйву на сцене. Ее тембр богатый и чистый, с широким диапазоном и нюансированным фразированием, вдохновленным инди, фолком и соул-влияниями.</p><p>На сцене она сочетает уязвимость с уверенной подачей, делая каждое выступление непосредственным и разделяемым. Ее динамическое фразирование и четкий тональный контроль делают мелодии запоминающимися и дают группе четкое эмоциональное направление.</p>
17281                        </div>
17282                        <div class="bio-description lang-en">
17283                            <p>Meet Elena Ivanova — stage name Lena, 26, the voice of Morvina. A soulful heart with warm, deeply emotional vocals.</p><p>Lena's presence shapes Morvina's sound: her phrasing and dynamic control turn quiet moments into intimacy and propel choruses into full-band drive on stage. Her timbre is rich and clear, with a wide range and nuanced phrasing informed by indie, folk and soul influences.</p><p>Onstage she blends vulnerability with confident delivery, making each performance feel immediate and shared. Her dynamic phrasing and crisp tonal control make melodies stick and give the band a clear emotional direction.</p>
17284                        </div>
17285                    </div>
17286                </div>
17287            </div>
17288        </div>
17289<div id="bio-irina-belova" class="bio-page">
17290            <div class="bio-header">
17291                <div class="container">
17292                    <a href="#artists" data-action="back" class="back-button lang-ru">← Назад к Артистам</a>
17293                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
17294                </div>
17295            </div>
17296            
17297            <div class="bio-content">
17298                <div class="bio-card">
17299                    <div class="bio-image-section">
17300                        <img src="https://media.echovira.com/morvina/morvina_irina_belova_multi_instrumentalist_portrait_0.png" alt="Irina Belova" class="bio-artist-image"
17301                srcset="https://media.echovira.com/morvina/morvina_irina_belova_multi_instrumentalist_portrait_0-400.webp 400w, https://media.echovira.com/morvina/morvina_irina_belova_multi_instrumentalist_portrait_0-800.webp 800w, https://media.echovira.com/morvina/morvina_irina_belova_multi_instrumentalist_portrait_0-full.webp 1024w"
17302                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
17303                    </div>
17304                    <div class="bio-text-section">
17305                        <div class="bio-artist-title">
17306                            <h1>Irina Belova</h1>
17307                            <div class="stage-name">"Irina" • 25 лет / years</div>
17308                            <div class="role lang-ru">Мультиинструменталистка</div>
17309                            <div class="role lang-en">Multi-Instrumentalist</div>
17310                        </div>
17311                        <div class="bio-description lang-ru">
17312                            <p>Встречайте Ирину Белову — Ирина, 25 лет, новая мультиинструменталистка Morvina. Экспериментальный музыкант, который сочетает рок-основы с электронными текстурами.</p><p>Как инструменталистка, она переходит между партиями, закрепляя грувы с точной артикуляцией и теплым, сфокусированным тоном. Как композитор-продюсер, она формирует мелодии и электронные слои, предпочитая четкие прогрессии и текстурированный звуковой дизайн.</p><p>Ее взаимодействие с группой обрамляет звуковую идентичность Morvina и усиливает динамическую игру. В живом исполнении это превращается в заряженные переходы и открытую импровизацию, которая поднимает публику.</p>
17313                        </div>
17314                        <div class="bio-description lang-en">
17315                            <p>Meet Irina Belova — Irina, 25, the new multi-instrumentalist of Morvina. An experimental musician who blends rock foundations with electronic textures.</p><p>As an instrumentalist she moves between parts, anchoring grooves with precise articulation and a warm, focused tone. As a composer-producer she shapes melodies and electronic layers, favoring clear progressions and textured sound design.</p><p>Her interplay with the band frames Morvina's sonic identity and tightens the push-and-pull of dynamics. Live, that translates into charged transitions and open improvisation that lift the crowd.</p>
17316                        </div>
17317                    </div>
17318                </div>
17319            </div>
17320        </div>
17321<div id="bio-ivan-smirnov" class="bio-page">
17322            <div class="bio-header">
17323                <div class="container">
17324                    <a href="#artists" data-action="back" class="back-button lang-ru">← Назад к Артистам</a>
17325                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
17326                </div>
17327            </div>
17328            
17329            <div class="bio-content">
17330                <div class="bio-card">
17331                    <div class="bio-image-section">
17332                        <img src="https://media.echovira.com/morvina/morvina_ivan_smirnov_male_singer_portrait_1.png" alt="Ivan Smirnov" class="bio-artist-image"
17333                srcset="https://media.echovira.com/morvina/morvina_ivan_smirnov_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_ivan_smirnov_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_ivan_smirnov_male_singer_portrait_1-full.
17333webp 1024w"
17334                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
17335                    </div>
17336                    <div class="bio-text-section">
17337                        <div class="bio-artist-title">
17338                            <h1>Ivan Smirnov</h1>
17339                            <div class="stage-name">"Ivan" • 26 лет / years</div>
17340                            <div class="role lang-ru">Вокалист</div>
17341                            <div class="role lang-en">Male Singer</div>
17342                        </div>
17343                        <div class="bio-description lang-ru">
17344                            <p>Встречайте Ивана Смирнова (сценическое имя: Иван), 26 лет — мужской вокалист Morvina. Резкий исполнитель с сырой, грубой сценической подачей.</p><p>Его голос сочетает темный, теплый тембр с широким диапазоном. Точное фразирование и динамический контроль позволяют ему переходить от шепота к полному газу без потери четкости, со стилистическими отсылками к постпанку и современной альтернативе.</p><p>Вокальный выбор Ивана и интенсивность на сцене определяют звуковую идентичность Morvina. Он направляет аранжировки к напряженным, драйвовым текстурам, которые раскрашивают гитару и ритм-партии. На сцене его присутствие превращает песни в заряженные, непредсказуемые моменты, которые поднимают всю живую энергию группы.</p>
17345                        </div>
17346                        <div class="bio-description lang-en">
17347                            <p>Meet Ivan Smirnov (stage name: Ivan), 26 — the male singer of Morvina. An edgy performer with a raw, gritty stage delivery.</p><p>His voice blends a dark, warm timbre with a broad range. Precise phrasing and dynamic control let him move from whisper to full-throttle without losing clarity, with stylistic nods to post-punk and modern alternative.</p><p>Ivan's vocal choices and onstage intensity define Morvina's sonic identity. He steers arrangements toward tense, driving textures that color guitar and rhythm parts. On stage his presence turns songs into charged, unpredictable moments that lift the whole band's live energy.</p>
17348                        </div>
17349                    </div>
17350                </div>
17351            </div>
17352        </div>
17353<div id="bio-ksenia-romanova" class="bio-page">
17354            <div class="bio-header">
17355                <div class="container">
17356                    <a href="#artists" data-action="back" class="back-button lang-ru">← Назад к Артистам</a>
17357                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
17358                </div>
17359            </div>
17360            
17361            <div class="bio-content">
17362                <div class="bio-card">
17363                    <div class="bio-image-section">
17364                        <img src="https://media.echovira.com/morvina/morvina_ksenia_romanova_female_singer_portrait_0.png" alt="Ksenia Romanova" class="bio-artist-image"
17365                srcset="https://media.echovira.com/morvina/morvina_ksenia_romanova_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/morvina/morvina_ksenia_romanova_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/morvina/morvina_ksenia_romanova_female_singer_portrait_0-full.webp 1024w"
17366                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
17367                    </div>
17368                    <div class="bio-text-section">
17369                        <div class="bio-artist-title">
17370                            <h1>Ksenia Romanova</h1>
17371                            <div class="stage-name">"Ksenia" • 23 лет / years</div>
17372                            <div class="role lang-ru">Вокалистка</div>
17373                            <div class="role lang-en">Female Singer</div>
17374                        </div>
17375                        <div class="bio-description lang-ru">
17376                            <p>Встречайте Ксению Романову — Ксения, 23 года, новая женская вокалистка Morvina. Ее молодая энергия и игривый, яркий голос привносят живой, четкий пульс в звучание группы.</p><p>Она поет с теплым, гибким тембром, комфортным средне-высоким диапазоном, выразительным фразированием и точным динамическим Ð
17376ºÐ¾Ð½Ñ‚ролем; ее сценическое присутствие опирается на поп, фолк и инди-влияния.</p><p>Ксения формирует аранжировки Morvina, добавляя легкое, ритмичное фразирование и мелодические хуки, которые поднимают как записи, так и живые сеты.</p>
17377                        </div>
17378                        <div class="bio-description lang-en">
17379                            <p>Meet Ksenia Romanova — Ksenia, 23, the new female singer of Morvina. Her youthful energy and playful, bright voice bring a lively, clear pulse to the band's sound.</p><p>She sings with a warm, agile timbre, a comfortable mid-to-high range, expressive phrasing and precise dynamic control; her stage presence draws on pop, folk and indie influences.</p><p>Ksenia shapes Morvina's arrangements by adding light, rhythmic phrasing and melodic hooks that lift both recordings and live sets.</p>
17380                        </div>
17381                    </div>
17382                </div>
17383            </div>
17384        </div>
17385<div id="bio-nikolai-petrov" class="bio-page">
17386            <div class="bio-header">
17387                <div class="container">
17388                    <a href="#artists" data-action="back" class="back-button lang-ru">← Назад к Артистам</a>
17389                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
17390                </div>
17391            </div>
17392            
17393            <div class="bio-content">
17394                <div class="bio-card">
17395                    <div class="bio-image-section">
17396                        <img src="https://media.echovira.com/morvina/morvina_nikolai_petrov_male_singer_portrait_0.png" alt="Nikolai Petrov" class="bio-artist-image"
17397                srcset="https://media.echovira.com/morvina/morvina_nikolai_petrov_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/morvina/morvina_nikolai_petrov_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/morvina/morvina_nikolai_petrov_male_singer_portrait_0-full.webp 1024w"
17398                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
17399                    </div>
17400                    <div class="bio-text-section">
17401                        <div class="bio-artist-title">
17402                            <h1>Nikolai Petrov</h1>
17403                            <div class="stage-name">"Nikolai" • 27 лет / years</div>
17404                            <div class="role lang-ru">Вокалист</div>
17405                            <div class="role lang-en">Male Singer</div>
17406                        </div>
17407                        <div class="bio-description lang-ru">
17408                            <p>Встречайте Николая Петрова — сценическое имя Николай, 27 лет, новый ведущий певец Morvina. Он привносит голос, который превращает тихие моменты во что-то незабываемое.</p><p>Эмоциональная сила с искренней, честной подачей, Николай формирует песни изнутри. Его присутствие направляет звучание Morvina к более интимной динамике и более крупным живым кульминациям, поднимая сценическую энергию группы.</p><p>Как вокалист, его теплый, слегка зернистый тембр и широкий диапазон сочетаются с точным фразированием и динамическим контролем — он переходит от приглушенных, хрупких линий к полнотелым кульминациям со сценической харизмой, вдохновленной инди-роком и славянским фолком.</p>
17409                        </div>
17410                        <div class="bio-description lang-en">
17411                            <p>Meet Nikolai Petrov — stage name Nikolai, 27, the new lead singer of Morvina. He brings a voice that turns quiet moments into something unforgettable.</p><p>An emotional powerhouse with a heartfelt, sincere delivery, Nikolai shapes songs from the inside out. His presence steers Morvina's sound toward more intimate dynamics and bigger live climaxes, lifting the band's onstage energy.</p><p>As a vocalist his warm, slightly grainy timbre and broad range pair with precise phrasing and dynamic control—he moves from hushed, fragile lines to full-bodied climaxes with a stage charisma influenced by indie rock and Slavic folk.</p>
17412                        </div>
17413                    </div>
17414                </div>
17415            </div>
17416        </div>
17417<div id="bio-sergei-orlov" class="bio-page">
17418            <div class="bio-header">
17419                <div class="container">
17420                    <a href="#artists" data-action="back" class="back-button lang-ru">← Назад к Артистам</a>
17421                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
17422                </div>
17423            </div>
17424            
17425            <div class="bio-content">
17426                <div class="bio-card">
17427                    <div class="bio-image-section">
17428                        <img src="https://media.echovira.com/morvina/morvina_sergei_orlov_male_singer_portrait_1.png" alt="Sergei Orlov" class="bio-artist-image"
17429                srcset="https://media.echovira.com/morvina/morvina_sergei_orlov_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_sergei_orlov_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_sergei_orlov_male_singer_portrait_1-full.
17429webp 1024w"
17430                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
17431                    </div>
17432                    <div class="bio-text-section">
17433                        <div class="bio-artist-title">
17434                            <h1>Sergei Orlov</h1>
17435                            <div class="stage-name">"Sergei" • 23 лет / years</div>
17436                            <div class="role lang-ru">Вокалист</div>
17437                            <div class="role lang-en">Male Singer</div>
17438                        </div>
17439                        <div class="bio-description lang-ru">
17440                            <p>Встречайте Сергея — Сергей Орлов, 23 года, новый мужской вокалист Morvina. Гладкий тембр и яркая сценическая энергия.</p><p>Современный сердцеед с теплым, гладким голосом и живым присутствием, Сергей привносит современную душевность и ясность в звучание Morvina.</p><p>Как ведущий вокалист Morvina, он охватывает широкий диапазон с богатым теноровым тембром, внимательным фразированием и уверенным динамическим контролем. Его сценическое присутствие сочетает интимное фразирование с смелой подачей, опираясь на поп, инди и соул-влияния.</p>
17441                        </div>
17442                        <div class="bio-description lang-en">
17443                            <p>Meet Sergei — Sergei Orlov, 23, the new male singer of Morvina. Smooth timbre and vibrant stage energy.</p><p>A modern heartthrob with a warm, smooth voice and lively presence, Sergei brings contemporary soulfulness and clarity to Morvina's sound.</p><p>As Morvina's lead vocalist he covers a wide range with a rich tenor timbre, careful phrasing and confident dynamic control. His stage presence blends intimate phrasing with bold delivery, drawing on pop, indie and soul influences.</p>
17444                        </div>
17445                    </div>
17446                </div>
17447            </div>
17448        </div>
17449<div id="bio-svetlana-pavlova" class="bio-page">
17450            <div class="bio-header">
17451                <div class="container">
17452                    <a href="#artists" data-action="back" class="back-button lang-ru">← Назад к Артистам</a>
17453                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
17454                </div>
17455            </div>
17456            
17457            <div class="bio-content">
17458                <div class="bio-card">
17459                    <div class="bio-image-section">
17460                        <img src="https://media.echovira.com/morvina/morvina_svetlana_pavlova_composer_lyricist_portrait_0.png" alt="Svetlana Pavlova" class="bio-artist-image"
17461                srcset="https://media.echovira.com/morvina/morvina_svetlana_pavlova_composer_lyricist_portrait_0-400.webp 400w, https://media.echovira.com/morvina/morvina_svetlana_pavlova_composer_lyricist_portrait_0-800.webp 800w, https://media.echovira.com/morvina/morvina_svetlana_pavlova_composer_lyricist_portrait_0-full.webp 1024w"
17462                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
17463                    </div>
17464                    <div class="bio-text-section">
17465                        <div class="bio-artist-title">
17466                            <h1>Svetlana Pavlova</h1>
17467                            <div class="stage-name">"Svetlana" • 26 лет / years</div>
17468                            <div class="role lang-ru">Композитор и Поэт</div>
17469                            <div class="role lang-en">Composer & Lyricist</div>
17470                        </div>
17471                        <div class="bio-description lang-ru">
17472                            <p>Встречайте Светлану Павлову — Светлана, 26 лет, композитор и поэт Morvina. Поэтическая поэтесса, которая сочетает русский романтизм с современными темами.</p><p>Как композитор Morvina, она создает запоминающиеся мелодии и характерные прогрессии, которые определяют звуковую идентичность группы. Ее гармонические выборы, развитие мотивов и чувство аранжировки придают записям их кинематографические волны и поддерживают движение живого сета.</p><p>Как поэтесса, она предпочитает интимное повествование, яркие образы и ритм, который баÐ
17472»Ð°Ð½ÑÐ¸Ñ€ÑƒÐµÑ‚ рифму и свободный поток, привнося эмоциональную перспективу в современные темы. Эти слова формируют динамику группы на сцене и приглашают слушателей в повествование каждой песни.</p>
17473                        </div>
17474                        <div class="bio-description lang-en">
17475                            <p>Meet Svetlana Pavlova — Svetlana, 26, Composer & Lyricist of Morvina. A poetic lyricist who blends Russian romanticism with contemporary themes.</p><p>As Morvina's composer she builds memorable melodies and signature progressions that define the band's sonic identity. Her harmony choices, motif development, and arrangement sense give the records their cinematic swells and keep the live set moving.</p><p>As a lyricist she favors intimate storytelling, vivid imagery and a cadence that balances rhyme and free-flow, bringing an emotional perspective to modern subjects. Those words shape the band's dynamics on stage and invite listeners into each song's narrative.</p>
17476                        </div>
17477                    </div>
17478                </div>
17479            </div>
17480        </div>
17481<div id="bio-viktoria-sokolova" class="bio-page">
17482            <div class="bio-header">
17483                <div class="container">
17484                    <a href="#artists" data-action="back" class="back-button lang-ru">← Назад к Артистам</a>
17485                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
17486                </div>
17487            </div>
17488            
17489            <div class="bio-content">
17490                <div class="bio-card">
17491                    <div class="bio-image-section">
17492                        <img src="https://media.echovira.com/morvina/morvina_viktoria_sokolova_female_singer_portrait_1.png" alt="Viktoria Sokolova" class="bio-artist-image"
17493                srcset="https://media.echovira.com/morvina/morvina_viktoria_sokolova_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/morvina/morvina_viktoria_sokolova_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/morvina/morvina_viktoria_sokolova_female_singer_portrait_1-full.webp 1024w"
17494                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
17495                    </div>
17496                    <div class="bio-text-section">
17497                        <div class="bio-artist-title">
17498                            <h1>Viktoria Sokolova</h1>
17499                            <div class="stage-name">"Vika" • 27 лет / years</div>
17500                            <div class="role lang-ru">Вокалистка</div>
17501                            <div class="role lang-en">Female Singer</div>
17502                        </div>
17503                        <div class="bio-description lang-ru">
17504                            <p>Встречайте Вику — Виктория Соколова, 27 лет, новая певица Morvina. Мощное меццо с командным присутствием, формирующим звучание группы.</p><p>Как вокалистка, она привносит теплый, темный тембр, широкий меццо-диапазон, точное фразирование и выразительную динамику, укорененные в фолк и альтернативных рок-влияниях. Ее голос переплетается с аранжировками Morvina, придавая мелодиям вес и эмоциональный контур.</p><p>В живом исполнении ее динамические сдвиги и сфокусированная подача превращают песни в театральные моменты, которые поднимают всю энергию группы и усиливают связь группы на сцене.</p>
17505                        </div>
17506                        <div class="bio-description lang-en">
17507                            <p>Meet Vika — Viktoria Sokolova, 27, the new singer of Morvina. A powerhouse mezzo with commanding presence shaping the band's sound.</p><p>As a vocalist she brings a warm, dark timbre, a wide mezzo range, precise phrasing and expressive dynamics rooted in folk and alternative rock influences. Her voice weaves through Morvina's arrangements, giving melodies weight and emotional contour.</p><p>Live, her dynamic shifts and focused delivery turn songs into theatrical moments that lift the whole band's energy and tighten the band's connection on stage.</p>
17508                        </div>
17509                    </div>
17510                </div>
17511            </div>
17512        </div>
17513</div>
17514<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
17515  <nav aria-label="Site pages">
17516    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
17517    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
17518    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
17519    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
17520  </nav>
17521  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
17522</footer>
17523`;e.s(["MorvinaEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=(0,t.injectFluidCanvas)(a,"#7010a0","#0d1117",.28);function s(e){document.body.classList.remove("lang-ru","lang-en"),document.body.classList.add("lang-"+e),a.querySelectorAll("[data-lang]").forEach(e
17523=>e.classList.remove("active")),a.querySelector(`[data-lang="${e}"]`)?.classList.add("active")}function r(e){a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display="none"});let i=document.getElementById("bio-"+e);i&&(i.classList.add("active"),window.scrollTo(0,0))}function n(){a.querySelectorAll(".bio-page").forEach(e=>e.classList.remove("active")),a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display=""}),window.scrollTo(0,0)}function o(e){let a=e.target,i=a.closest("[data-artist-id]");if(i){e.preventDefault(),r(i.dataset.artistId);return}if(a.closest('[data-action="back"]')){e.preventDefault(),n();return}}window.setLanguage=s,s("ru"),a.querySelector('[data-lang="ru"]')?.addEventListener("click",()=>s("ru")),a.querySelector('[data-lang="en"]')?.addEventListener("click",()=>s("en")),window.showArtistBio=r,window.hideBioPage=n,window.showMainPage=n;let l=document.getElementById("mobileToggle"),c=document.getElementById("navMenu");l&&c&&l.addEventListener("click",()=>c.classList.toggle("active"));let d=()=>document.getElementById("mainNav")?.classList.toggle("scrolled",window.scrollY>100);return a.addEventListener("click",o),window.addEventListener("scroll",d),()=>{i(),a.removeEventListener("click",o),window.removeEventListener("scroll",d),delete window.setLanguage,delete window.showArtistBio,delete window.hideBioPage,delete window.showMainPage}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,className:"echovira-page-root",dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(n)},suppressHydrationWarning:!0}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},173407,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n="https://media.echovira.com/musicvideo",o=`
17524  <link rel="preconnect" href="https://fonts.googleapis.com">
17525  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
17526  <link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet">
17527  <style>
17528    @font-face{font-family:'Bebas Fallback';src:local('Impact'),local('Haettenschweiler');size-adjust:74.3%;ascent-override:88%;descent-override:12%;line-gap-override:0%}
17529    @font-face{font-family:'Inter Fallback';src:local('Helvetica Neue'),local('Arial');size-adjust:109.2%;ascent-override:90%;descent-override:22%;line-gap-override:0%}
17530  </style>
17531  <script type="application/ld+json">
17532  {
17533    "@context": "https://schema.org",
17534    "@type": "Service",
17535    "name": "EchoVira Music Video",
17536    "serviceType": "Music Video Production",
17537    "provider": {
17538      "@type": "Organization",
17539      "name": "EchoVira",
17540      "url": "https://echovira.com"
17541    },
17542    "description": "End-to-end music video production for independent artists and labels. Concept development, full crew production, lyric videos, live performance captures, and short-form vertical content for YouTube, Instagram, TikTok, and Spotify Canvas.",
17543    "areaServed": "Worldwide",
17544    "url": "https://musicvideo.echovira.com",
17545    "location": {
17546      "@type": "Place",
17547      "address": {"@type": "PostalAddress", "addressLocality": "Los Angeles", "addressRegion": "CA", "addressCountry": "US"}
17548    },
17549    "hasOfferCatalog": {
17550      "@type": "OfferCatalog",
17551      "name": "Music Video Services",
17552      "itemListElement": [
17553        {"@type": "Offer", "itemOffered": {"@type": "Service", "name": "Full Music Video Production"}},
17554        {"@type": "Offer", "itemOffered": {"@type": "Service", "name": "Lyric Video"}},
17555        {"@type": "Offer", "itemOffered": {"@type": "Service", "name": "Live Performance Video"}},
17556        {"@type": "Offer", "itemOffered": {"@type": "Service", "name": "Vertical Short-Form Content"}}
17557      ]
17558    }
17559  }
17560  </script>
17561  <style>
17562    .vc_row[data-vc-full-width],.wpb_column,.vc_column_container,.wpb_wrapper,.entry-content,.site-content-contain,#content,.site-content,.site,#page,main{width:100%!important;max-width:100%!important;padding:0!important;margin:0!important}
17563    :root{
17564      --ev-bg:#0d0d0f;
17565      --ev-fg:#f5f0e8;
17566      --bg:#0d0d0f;
17567      --bg2:#111116;
17568      --fg:#f5f0e8;
17569      --fg-dim:rgba(245,240,232,0.62);
17570      --red:#c0392b;
17571      --red-dim:rgba(192,57,43,0.18);
17572      --border:rgba(245,240,232,0.1);
17573      --gold:#c9a32c;
17574      --radius:6px;
17575    }
17576    *{margin:0;padding:0;box-sizing:border-box}
17577    html{scroll-behavior:smooth}
17578    body{font-family:'Inter','Inter Fallback',system-ui,sans-serif;background:var(--ev-bg);color:var(--ev-fg);overflow-x:hidden;line-height:1.6}
17579    a{color:var(--fg);text-decoration:none}
17580    a:hover{color:var(--gold)}
17581
17582    /* Nav */
17583    .mv-nav{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(13, 13, 15, 0.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);padding:0.9rem 0}
17584    .mv-nav-inner{max-width:1280px;margin:0 auto;padding:0 2rem;display:flex;justify-content:space-between;align-items:center;gap:2rem}
17585    .mv-logo{display:flex;align-items:center;gap:0.7rem;font-size:0.95rem;font-weight:600;color:var(--fg);letter-spacing:0.03em;text-decoration:none}
17586    .mv-logo-mark{width:22px;height:22px;display:grid;grid-template-columns:1fr 1fr;gap:3px}
17587    .mv-logo-mark span{background:var(--fg);border-radius:3px;display:block}
17588    .mv-logo-text{font-family:Georgia,'Times New Roman',serif;font-style:italic}
17589    .mv-logo-label{color:#e74c3c;font-style:normal}
17590    .mv-nav-links{display:flex;gap:2rem;list-style:none}
17591    .mv-nav-links a{font-size:0.875rem;color:var(--fg-dim);transition:color 0.2s}
17592    .mv-nav-links a:hover{color:var(--fg)}
17593    .mv-nav-cta{background:var(--red);color:#fff;padding:0.5rem 1.25rem;border-radius:var(--radius);font-size:0.875rem;font-weight:600;transition:background 0.2s;white-space:nowrap}
17594    .mv-nav-cta:hover{background:#a93226;color:#fff}
17595
17596    /* Hero */
17597    .mv-hero{min-height:100vh;display:flex;align-items:flex-end;padding:8rem 2rem 5rem;background:radial-gradient(ellipse 1100px 600px at 50% 0%,rgba(192,57,43,0.1),transparent 60%),radial-gradient(ellipse 800px 500px at 80% 80%,rgba(201,163,44,0.06),transparent 65%)}
17598    .mv-hero-inner{max-width:1280px;margin:0 auto;width:100%}
17599    .mv-eyebrow{display:inline-flex;align-items:center;gap:0.5rem;font-size:0.75rem;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:#e74c3c;margin-bottom:1.25rem}
17600    .mv-eyebrow::before{content:'';display:block;width:2rem;height:2px;background:var(--red)}
17601    h1{font-family:'Bebas Neue','Bebas Fallback',Impact,sans-serif;font-size:clamp(4rem,12vw,10rem);line-height:0.88;letter-spacing:0.01em;margin-bottom:2rem;color:var(--fg)}
17602    h1 span{color:var(--red)}
17603    .mv-hero-sub{max-width:580px;font-size:1.125rem;color:var(--fg-dim);line-height:1.7;margin-bottom:2.5rem}
17604    .mv-cta-row{display:flex;gap:1rem;flex-wrap:wrap;align-items:center}
17605    .mv-btn{display:inline-block;padding:0.8rem 2rem;border-radius:var(--radius);font-size:0.9375rem;font-weight:600;transition:all 0.2s;cursor:pointer;border:none}
17606    .mv-btn-primary{background:var(--red);color:#fff}
17607    .mv-btn-primary:hover{background:#a93226;color:#fff}
17608    .mv-btn-ghost{background:transparent;color:var(--fg);border:1px solid var(--border)}
17609    .mv-btn-ghost:hover{border-color:var(--fg-dim);color:var(--fg)}
17610    .mv-hero-stats{display:flex;gap:3rem;margin-top:4rem;padding-top:2rem;border-top:1px solid var(--border);flex-wrap:wrap}
17611    .mv-stat-val{font-family:'Bebas Neue','Bebas Fallback',Impact,sans-serif;font-size:2rem;color:var(--gold);letter-spacing:0.02em}
17612    .mv-stat-label{font-size:0.8125rem;color:var(--fg-dim);margin-top:0.1rem}
17613
17614    /* Generic section */
17615    section{padding:6rem 2rem}
17616    .mv-inner{max-width:1280px;margin:0 auto}
17617    .mv-muted{background:var(--bg2)}
17618    h2{font-family:'Bebas Neue','Bebas Fallback',Impact,sans-serif;font-size:clamp(2.5rem,5vw,5rem);line-height:0.92;letter-spacing:0.02em;margin-bottom:1rem;color:var(--fg)}
17619    h2 span{color:var(--red)}
17620    .mv-section-body{font-size:1.0625rem;color:var(--fg-dim);max-width:54ch;line-height:1.72;margin-bottom:3rem}
17621
17622    /* Services grid */
17623    .mv-services-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1.5rem}
17624    .mv-card{background:rgba(255,255,255,0.03);border:1px solid var(--border);border-radius:10px;padding:2rem;transition:border-color 0.2s,transform 0.2s;position:relative;overflow:hidden}
17625    .mv-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(to right,var(--red),transparent)}
17626    .mv-card:hover{border-color:rgba(192,57,43,0.4);transform:translateY(-3px)}
17627    .mv-card-num{font-family:'Bebas Neue','Bebas Fallback',Impact,sans-serif;font-size:3.5rem;color:rgba(255,255,255,0.4);line-height:1;position:absolute;right:1.5rem;top:1rem}
17628    h3{font-size:1.0625rem;font-weight:600;margin-bottom:0.65rem;color:var(--fg)}
17629    .mv-card-desc{font-size:0.9rem;color:var(--fg-dim);line-height:1.65}
17630
17631    /* Process timeline */
17632    .mv-timeline{display:flex;flex-direction:column;gap:0}
17633    .mv-tl-item{display:grid;grid-template-columns:3rem 1fr;gap:1.5rem;padding:1.75rem 0;border-bottom:1px solid var(--border)}
17634    .mv-tl-item:last-child{border-bottom:none}
17635    .mv-tl-num{font-family:'Bebas Neue','Bebas Fallback',Impact,sans-serif;font-size:2rem;color:var(--red);line-height:1;padding-top:0.1rem}
17636    .mv-tl-title{font-size:1.0625rem;font-weight:600;margin-bottom:0.45rem}
17637    .mv-tl-body{font-size:0.9rem;color:var(--fg-dim);line-height:1.65}
17638    .mv-tl-dur{display:inline-block;margin-top:0.5rem;font-size:0.75rem;font-weight:600;letter-spacing:0.08em;color:var(--gold);text-transform:uppercase}
17639
17640    /* Formats */
17641    .mv-formats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}
17642    .mv-format-pill{background:rgba(255,255,255,0.04);border:1px solid var(--border);border-radius:8px;padding:1rem 1.25rem}
17643    .mv-format-label{font-size:0.7rem;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;color:#ff7a63;margin-bottom:0.3rem}
17644    .mv-format-val{font-size:0.9rem;color:var(--fg)}
17645
17646    /* FAQ */
17647    .mv-faq{display:flex;flex-direction:column;gap:1px;border:1px solid var(--border);border-radius:10px;overflow:hidden}
17648    .mv-faq-item{background:rgba(255,255,255,0.03)}
17649    .mv-faq-item+.mv-faq-item{border-top:1px solid var(--border)}
17650    .mv-faq-q{list-style:none;padding:1.25rem 1.5rem;font-size:1rem;font-weight:500;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:1rem;transition:background 0.15s}
17651    .mv-faq-q::-webkit-details-marker{display:none}
17652    .mv-faq-q:hover{background:rgba(192,57,43,0.06)}
17653    .mv-faq-q::after{content:'+';color:var(--red);font-size:1.25rem;flex-shrink:0;transition:transform 0.25s}
17654    .mv-faq-item[open] .mv-faq-q::after{transform:rotate(45deg)}
17655    .mv-faq-a{padding:0 1.5rem 1.25rem;font-size:0.9375rem;color:var(--fg-dim);line-height:1.72}
17656    
17657
17658    /* Network */
17659    .mv-network-row{display:flex;gap:0.75rem;flex-wrap:wrap;margin-top:2rem}
17660    .mv-network-pill{display:inline-flex;align-items:center;gap:0.4rem;padding:0.4rem 0.9rem;border:1px solid var(--border);border-radius:99px;font-size:0.8rem;color:var(--fg-dim);
17660transition:border-color 0.2s,color 0.2s}
17661    .mv-network-pill:hover{border-color:var(--red);color:var(--red)}
17662
17663    /* CTA */
17664    .mv-cta-section{background:linear-gradient(135deg,rgba(192,57,43,0.14),rgba(13,13,15,0.95));border-top:1px solid var(--border);text-align:center;padding:6rem 2rem}
17665    .mv-cta-section h2{font-size:clamp(3rem,8vw,7rem)}
17666    .mv-cta-section p{color:var(--fg-dim);max-width:52ch;margin:1.25rem auto 2.5rem;font-size:1.0625rem;line-height:1.7}
17667    .mv-cta-center{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap}
17668
17669    /* Footer */
17670    .mv-footer{background:var(--bg);border-top:1px solid var(--border);padding:3rem 2rem}
17671    .mv-footer-inner{max-width:1280px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1.5rem}
17672    .mv-footer-brand{font-family:'Bebas Neue','Bebas Fallback',Impact,sans-serif;font-size:1.5rem;letter-spacing:0.04em;color:var(--fg)}
17673    .mv-footer-links{display:flex;gap:1.5rem;flex-wrap:wrap}
17674    .mv-footer-links a{font-size:0.8125rem;color:var(--fg-dim)}
17675    .mv-footer-links a:hover{color:#e74c3c}
17676    .mv-copyright{font-size:0.75rem;color:rgba(245,240,232,0.55);margin-top:0.35rem}
17677
17678    @media(max-width:768px){
17679      .mv-nav-links{display:none}
17680      .mv-hero-stats{gap:2rem}
17681      h1{font-size:clamp(3.5rem,15vw,8rem)}
17682    }
17683  </style>
17684
17685<nav class="mv-nav" aria-label="EchoVira Music Video navigation">
17686  <div class="mv-nav-inner">
17687    <a href="https://echovira.com" class="mv-logo" aria-label="EchoVira home">
17688      <div class="mv-logo-mark"><span></span><span></span><span></span><span></span></div>
17689      <span class="mv-logo-text">
17689EchoVira <span class="mv-logo-label">Music Video</span></span>
17690    </a>
17691    <ul class="mv-nav-links" role="list">
17692      <li><a href="#services">Services</a></li>
17693      <li><a href="#process">Process</a></li>
17694      <li><a href="#deliverables">Deliverables</a></li>
17695      <li><a href="#faq">FAQ</a></li>
17696      <li><a href="https://echovira.com">Network</a></li>
17697    </ul>
17698    <a href="/contact" class="mv-btn mv-nav-cta">Start a project</a>
17699  </div>
17700</nav>
17701
17702<span id="main-content" tabindex="-1"></span>
17703
17704<header class="mv-hero" role="banner">
17705  <div class="mv-hero-inner">
17706    <div class="mv-eyebrow">Music Video Production</div>
17707    <h1>Visuals that make your<br><span>music</span> unforgettable.</h1>
17708    <p class="mv-hero-sub">
17709      EchoVira Music Video produces concept-to-delivery music video content for emerging and established artists worldwide —
17710      performance videos, lyric videos, narrative films, and short-form content built for the streaming era.
17711    </p>
17712    <div class="mv-cta-row">
17713      <a href="/contact" class="mv-btn mv-btn-primary">Start a project</a>
17714      <a href="#services" class="mv-btn mv-btn-ghost">See what we do</a>
17715    </div>
17716    <div class="mv-hero-stats" aria-label="Key production facts">
17717      <div>
17718        <div class="mv-stat-val">Full production</div>
17719        <div class="mv-stat-label">Concept to delivery</div>
17720      </div>
17721      <div>
17722        <div class="mv-stat-val">LA &amp; remote</div>
17723        <div class="mv-stat-label">Production locations</div>
17724      </div>
17725      <div>
17726        <div class="mv-stat-val">All formats</div>
17727        <div class="mv-stat-label">YouTube, vertical, editorial</div>
17728      </div>
17729      <div>
17730        <div class="mv-stat-val">Open to all</div>
17731        <div class="mv-stat-label">Any artist, any genre</div>
17732      </div>
17733    </div>
17734  </div>
17735</header>
17736
17737<section id="onset" aria-labelledby="onset-heading">
17738  <div class="mv-inner">
17739    <div class="mv-eyebrow">On Set</div>
17740    <h2 id="onset-heading">Cinematic production from <span>concept</span> to color grade.</h2>
17741    <p class="mv-section-body">
17742      Director-led shoots in Los Angeles and on location — every frame composed for the music, not for
17743      a template. Production designed end-to-end, delivered in formats ready for every platform.
17744    </p>
17745    <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;margin-top:3rem;">
17746      <figure style="margin:0;border-radius:14px;overflow:hidden;">
17747        <img loading="lazy" decoding="async" src="${n}/hero.webp"
17748             alt="Music video set — director monitoring playback at video village"
17749             style="display:block;width:100%;aspect-ratio:16/9;object-fit:cover;" />
17750      </figure>
17751      <figure style="margin:0;border-radius:14px;overflow:hidden;">
17752        <img loading="lazy" decoding="async" src="${n}/production.webp"
17753             alt="On-location music video production with crew and gear"
17754             style="display:block;width:100%;aspect-ratio:16/9;object-fit:cover;" />
17755      </figure>
17756      <figure style="margin:0;border-radius:14px;overflow:hidden;">
17757        <img loading="lazy" decoding="async" src="${n}/director.webp"
17758             alt="Director composing the next shot with the DP"
17759             style="display:block;width:100%;aspect-ratio:16/9;object-fit:cover;" />
17760      </figure>
17761      <figure style="margin:0;border-radius:14px;overflow:hidden;">
17762        <img loading="lazy" decoding="async" src="${n}/performance.webp"
17763             alt="Artist performance captured live on set"
17764             style="display:block;width:100%;aspect-ratio:16/9;object-fit:cover;" />
17765      </figure>
17766    </div>
17767  </div>
17768</section>
17769
17770<section id="services" class="mv-muted" aria-labelledby="services-heading">
17771  <div class="mv-inner">
17772    <div class="mv-eyebrow">Services</div>
17773    <h2 id="services-heading">End-to-end <span>music video</span> production</h2>
17774    <p class="mv-section-body">
17775      From a simple performance video to a fully cinematic narrative, every project is approached with
17776      the same commitment to craft and artist vision — no production templates, no generic look.
17777    </p>
17778    <div class="mv-services-grid">
17779      <article class="mv-card">
17780        <div class="mv-card-num" aria-hidden="true">01</div>
17781        <h3>Concept development</h3>
17782        <p class="mv-card-desc">
17783          Creative direction and storyboarding built entirely around your music's narrative and your artistic identity.
17784          We develop visual concepts that deepen your song — not illustrations of lyrics, but worlds that expand them.
17785        </p>
17786      </article>
17787      <article class="mv-card">
17788        <div class="mv-card-num" aria-hidden="true">02</div>
17789        <h3>Full video production</h3>
17790        <p class="mv-card-desc">
17791          Director, director of photography, crew, and equipment for location or studio shoots.
17792          Los Angeles-based production with relationships across LA locations. Remote crew supervision available for other markets.
17793        </p>
17794      </article>
17795      <article class="mv-card">
17796        <div class="mv-card-num" aria-hidden="true">03</div>
17797        <h3>Lyric videos</h3>
17798        <p class="mv-card-desc">
17799          Animated lyric videos with typography and motion design that match your music's visual identity —
17800          delivered in 4K for YouTube, 9:16 vertical for Instagram and TikTok, and Spotify Canvas format.
17801        </p>
17802      </article>
17803      <article class="mv-card">
17804        <div class="mv-card-num" aria-hidden="true">04</div>
17805        <h3>Live performance &amp; session videos</h3>
17806        <p class="mv-card-desc">
17807          Studio session captures and live performance videos in professional acoustic and visual environments —
17808          ideal for editorial press coverage, playlist pitching, and streaming platform content.
17809        </p>
17810      </article>
17811      <article class="mv-card">
17812        <div class="mv-card-num" aria-hidden="true">05</div>
17813        <h3>Post-production</h3>
17814        <p class="mv-card-desc">
17815          Professional edit, color grade, and VFX. Delivered in 4K and vertical crop versions for all major platforms.
17816          Color grading calibrated for streaming platform delivery standards and intended visual aesthetic.
17817        </p>
17818      </article>
17819      <article class="mv-card">
17820        <div class="mv-card-num" aria-hidden="true">06</div>
17821        <h3>Vertical &amp;
17821 short-form content</h3>
17822        <p class="mv-card-desc">
17823          Production of Instagram Reels, TikTok, and YouTube Shorts companion content from the same shoot day —
17824          maximizing the creative and commercial value of every production.
17825        </p>
17826      </article>
17827    </div>
17828  </div>
17829</section>
17830
17831<section id="process" aria-labelledby="approach-heading">
17832  <div class="mv-inner">
17833    <div class="mv-eyebrow">Our Approach</div>
17834    <h2 id="approach-heading">A music video should be as<br><span>good as the music.</span></h2>
17835    <p class="mv-section-body">
17836      The best music videos don't illustrate a song — they deepen it. Our production process starts with a thorough
17837      creative conversation: what does this music feel like, what world does it come from, what should a first-time
17838      listener see and feel when they watch it.
17839    </p>
17840    <div class="mv-timeline" role="list">
17841      <div class="mv-tl-item" role="listitem">
17842        <div class="mv-tl-num">01</div>
17843        <div>
17844          <div class="mv-tl-title">Project inquiry and brief</div>
17845          <p class="mv-tl-body">Submit your track, visual references, target platform, and rough budget range. We review every inquiry personally and respond with initial thoughts.</p>
17846          <span class="mv-tl-dur">Timeline: 5 business days for response</span>
17847        </div>
17848      </div>
17849      <div class="mv-tl-item" role="listitem">
17850        <div class="mv-tl-num">02</div>
17851        <div>
17852          <div class="mv-tl-title">Creative development</div>
17853          <p class="mv-tl-body">Director-led concept development — storyboard, visual references, location scouting, wardrobe direction. Built around your music's intent, not a generic visual template.</p>
17854          <span class="mv-tl-dur">Timeline: 1–2 weeks</span>
17855        </div>
17856      </div>
17857      <div class="mv-tl-item" role="listitem">
17858        <div class="mv-tl-num">03</div>
17859        <div>
17860          <div class="mv-tl-title">Pre-production</div>
17861          <p class="mv-tl-body">Location permits, crew scheduling, equipment logistics, talent coordination. Every production detail handled so you arrive on shoot day ready to perform.</p>
17862          <span class="mv-tl-dur">Timeline: 1 week</span>
17863        </div>
17864      </div>
17865      <div class="mv-tl-item" role="listitem">
17866        <div class="mv-tl-num">04</div>
17867        <div>
17868          <div class="mv-tl-title">Production</div>
17869          <p class="mv-tl-body">1–2 shoot days depending on project scope. Director, DP, and crew manage every technical detail. Your role is performance — we handle everything else.</p>
17870          <span class="mv-tl-dur">Timeline: 1–2 shoot days</span>
17871        </div>
17872      </div>
17873      <div class="mv-tl-item" role="listitem">
17874        <div class="mv-tl-num">05</div>
17875        <div>
17876          <div class="mv-tl-title">Post-production and delivery</div>
17877          <p class="mv-tl-body">Professional edit, color grade, and VFX. Delivered in 4K master, 1080p web version, and 9:16 vertical crop. Optional Spotify Canvas and lyric overlay add-ons.</p>
17878          <span class="mv-tl-dur">Timeline: 2–4 weeks</span>
17879        </div>
17880      </div>
17881    </div>
17882  </div>
17883</section>
17884
17885<section id="deliverables" class="mv-muted" aria-labelledby="deliverables-heading">
17886  <div class="mv-inner">
17887    <div class="mv-eyebrow">Deliverables</div>
17888    <h2 id="deliverables-heading">Everything you need, <span>every platform</span></h2>
17889    <p class="mv-section-body">
17890      Standard delivery covers all major streaming and social platforms. Every project includes formats
17891      optimized for the platforms that matter most to your release.
17892    </p>
17893    <div class="mv-formats-grid">
17894      <div class="mv-format-pill">
17895        <div class="mv-format-label">YouTube</div>
17896        <div class="mv-format-val">4K master + 1080p web</div>
17897      </div>
17898      <div class="mv-format-pill">
17899        <div class="mv-format-label">Instagram Reels</div>
17900        <div class="mv-format-val">9:16 vertical, 60-sec</div>
17901      </div>
17902      <div class="mv-format-pill">
17903        <div class="mv-format-label">TikTok</div>
17904        <div class="mv-format-val">9:16 vertical, 3-min</div>
17905      </div>
17906      <div class="mv-format-pill">
17907        <div class="mv-format-label">YouTube Shorts</div>
17908        <div class="mv-format-val">9:16 vertical, 60-sec</div>
17909      </div>
17910      <div class="mv-format-pill">
17911        <div class="mv-format-label">
17911Spotify Canvas</div>
17912        <div class="mv-format-val">9:16 loop, 3–8 sec (add-on)</div>
17913      </div>
17914      <div class="mv-format-pill">
17915        <div class="mv-format-label">Apple Music</div>
17916        <div class="mv-format-val">4K editorial version</div>
17917      </div>
17918      <div class="mv-format-pill">
17919        <div class="mv-format-label">Press / Editorial</div>
17920        <div class="mv-format-val">Still frames + EPK assets</div>
17921      </div>
17922      <div class="mv-format-pill">
17923        <div class="mv-format-label">Archive master</div>
17924        <div class="mv-format-val">4K ProRes / DNxHD</div>
17925      </div>
17926    </div>
17927  </div>
17928</section>
17929
17930<section id="faq" aria-labelledby="faq-heading">
17931  <div class="mv-inner">
17932    <div class="mv-eyebrow">Questions</div>
17933    <h2 id="faq-heading">How <span>production</span> works</h2>
17934    <p class="mv-section-body">What to expect from start to finish.</p>
17935    <div class="mv-faq" role="list">
17936      <details class="mv-faq-item" role="listitem">
17937        <summary class="mv-faq-q">How do I start a music video project?</summary>
17938        <div class="mv-faq-a">Submit a project inquiry with your track, any visual references or concepts you have in mind, your target platform (YouTube, Instagram, etc.), and your rough budget range. We'll respond within 5 business days with initial creative direction thoughts. No formal brief required at this stage — we want to hear how you're thinking about it.</div>
17939      </details>
17940      <details class="mv-faq-item" role="listitem">
17941        <summary class="mv-faq-q">What is the typical production timeline?</summary>
17942        <div class="mv-faq-a">A standard music video takes 4–8 weeks from first conversation to final delivery: 1–2 weeks concept development, 1 week pre-production, 1–2 shoot days, and 2–4 weeks post-production. Rush delivery can be arranged for specific projects — contact us to discuss.</div>
17943      </details>
17944      <details class="mv-faq-item" role="listitem">
17945        <summary class="mv-faq-q">Where do you produce videos?</summary>
17946        <div class="mv-faq-a">We're based in Los Angeles and have relationships with a wide range of locations and facilities across LA. We also work with artists remotely — we can connect you with production crews in your city and supervise creative and technical direction remotely. International productions are handled on a project-by-project basis.</div>
17947      </details>
17948      <details class="mv-faq-item" role="listitem">
17949        <summary class="mv-faq-q">Do I need to have a concept before I contact you?</summary>
17950        <div class="mv-faq-a">No. Many of our best projects start from a track and a mood reference — no script, no concept. Our creative development process is built for this. If you do have a concept already, we'll work to develop and refine it. If you have only a feeling about the music, we'll build from that. Both starting points are valid.</div>
17951      </details>
17952      <details class="mv-faq-item" role="listitem">
17953        <summary class="mv-faq-q">What deliverables do I receive?</summary>
17954        <div class="mv-faq-a">Standard delivery includes a 4K master, a 1080p web version, and a 9:16 vertical crop for short-form platforms. Still frames and EPK photo assets are included from production. Optional add-ons: Spotify Canvas loop, animated lyric overlay, and additional vertical cuts for specific platforms.</div>
17955      </details>
17956      <details class="mv-faq-item" role="listitem">
17957        <summary class="mv-faq-q">Do you produce videos for artists outside the EchoVira network?</summary>
17958        <div class="mv-faq-a">Yes. EchoVira Music Video is open to any artist or label, regardless of network affiliation. Being part of the EchoVira label network is not required to access production services. We work with artists across all genres, languages, and backgrounds.</div>
17959      </details>
17960    </div>
17961  </div>
17962</section>
17963
17964<section class="mv-muted" aria-labelledby="network-heading">
17965  <div class="mv-inner">
17966    <div class="mv-eyebrow">EchoVira Network</div>
17967    <h2 id="network-heading">Music from <span>12 cultural labels</span></h2>
17968    <p class="mv-section-body">
17969      EchoVira Music Video has production experience working with artists across 12 cultural music labels —
17970      Persian, Korean, Arabic, Latin, Chinese, French, Turkish, South Asian, Slavic, Portuguese, instrumental, and American indie.
17971      We understand the visual traditions and contemporary aesthetics of each.
17972    </p>
17973    <div class="mv-network-row">
17974      <a href="https://echovira.com" class="mv-network-pill">🎵 EchoVira Hub</a>
17975      <a href="https://mastering.echovira.com" class="mv-network-pill">🎚 Audio Mastering</a>
17976      <a href="https://hich.echovira.com" class="mv-network-pill">Hich — Persian</a>
17977      <a href="https://pulseborn.echovira.com" class="mv-network-pill">Pulseborn — American</a>
17978      <a href="https://byeolbit.echovira.com" class="mv-network-pill">Byeolbit — K-music</a>
17979      <a href="https://amanecer.echovira.com" class="mv-network-pill">Amanecer — Latin</a>
17980      <a href="https://bahira.echovira.com" class="mv-network-pill">Bahira — Arabic</a>
17981      <a href="https://syahi.echovira.com" class="mv-network-pill">Syahi — South Asian</a>
17982      <a href="https://luoxi.echovira.com" class="mv-network-pill">Luoxi — Chinese</a>
17983      <a href="https://miroir.echovira.com" class="mv-network-pill">Miroir — French</a>
17984      <a href="https://cortica.echovira.com" class="mv-network-pill">Cortica — Portuguese</a>
17985    </div>
17986  </div>
17987</section>
17988
17989<section class="mv-cta-section" aria-labelledby="cta-heading">
17990  <div class="mv-eyebrow" style="justify-content:center">Let's make something</div>
17991  <h2 id="cta-heading">Your music deserves<br>a <span>visual world.</span></h2>
17992  <p>Start a music video project with EchoVira — concept to delivery, built around your music. Los Angeles-based, open to artists worldwide.</p>
17993  <div class="mv-cta-center">
17994    <a href="/contact" class="mv-btn mv-btn-primary">Start a project</a>
17995    <a href="/contact" class="mv-btn mv-btn-ghost">View our work</a>
17996  </div>
17997</section>
17998
17999<footer class="mv-footer" role="contentinfo">
18000  <div class="mv-footer-inner">
18001    <div>
18002      <a href="https://echovira.com" class="mv-logo" style="margin-bottom:0.4rem">
18003        <div class="mv-logo-mark"><span></span><span></span><span></span><span></span></div>
18004        <span class="mv-logo-text">EchoVira <span class="mv-logo-label">Music Video</span></span>
18005      </a>
18006      <div class="mv-copyright">\xa9 ${new Date().getFullYear()} EchoVira. All rights reserved. &middot; Los Angeles, CA</div>
18007    </div>
18008    <nav class="mv-footer-links" aria-label="Footer navigation">
18009      <a href="https://echovira.com">EchoVira Home</a>
18010      <a href="https://mastering.echovira.com">Mastering</a>
18011      <a href="https://echovira.com/social">Social Links</a>
18012      <a href="https://gallery.echovira.com">Store</a>
18013      <a href="/contact">Submit a project</a>
18014    </nav>
18015  </div>
18016</footer>
18017
18018<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
18019  <nav aria-label="Site pages">
18020    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
18021    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
18022    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
18023    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
18024  </nav>
18025  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
18026</footer>
18027`;e.s(["MusicvideoEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{if(!e.current)return;e.current.querySelectorAll("script").forEach(e=>{let a=document.createElement("script");Array.from(e.attributes).forEach(e=>a.setAttribute(e.name,e.value)),a.textContent=e.textContent,e.parentNode?.replaceChild(a,e)});let a=(0,t.injectFluidCanvas)(e.current,"#c03010","#0d0005",.28);return()=>a()},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(o)}}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},199826,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n=`
18028    <link rel="icon" type="image/png" href="https://media.echovira.com/echovira/pulseborn_logo.png">
18029<style>
18030/* Force full width */
18031.vc_row[data-vc-full-width],
18032.wpb_column,
18033.vc_column_container,
18034.wpb_wrapper {
18035    width: 100% !important;
18036    max-width: 100% !important;
18037    padding: 0 !important;
18038    margin: 0 !important;
18039}
18040
18041/* Break out of WordPress container */
18042.entry-content,
18043.site-content-contain,
18044#content {
18045    max-width: 100% !important;
18046    padding: 0 !important;
18047    width: 100% !important;
18048}
18049
18050/* Make body full width */
18051body, .site {
18052    margin: 0 !important;
18053    padding: 0 !important;
18054}
18055
18056</style>  
18057 <style>
18058/* Push content to top */
18059.site-content,
18060.site,
18061#page,
18062main {
18063    margin-top: 0 !important;
18064    padding-top: 0 !important;
18065}
18066
18067/* Full width */
18068body {
18069    margin: 0 !important;
18070    padding: 0 !important;
18071}
18072</style>
18073
18074 <style>
18075        :root {
18076            --ev-bg: #f8f9fa;
18077            --ev-fg: #333333;
18078            --primary-color: #1a1a1a;
18079            --secondary-color: #ff6b35;
18080            --accent-color: #f7931e;
18081            --text-light: #ffffff;
18082            --text-dark: #333333;
18083            --background-dark: #0d1117;
18084            --background-light: #f8f9fa;
18085            --gradient-main: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
18086            --shadow-light: 0 2px 20px rgba(0,0,0,0.1);
18087            --shadow-heavy: 0 10px 40px rgba(0,0,0,0.2);
18088            --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
18089        }
18090
18091        * {
18092            margin: 0;
18093            padding: 0;
18094            box-sizing: border-box;
18095        }
18096
18097        body {
18098            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
18099            line-height: 1.6;
18100            color: var(--ev-fg);
18101            background: var(--ev-bg);
18102            overflow-x: hidden;
18103        }
18104
18105        /* Navigation */
18106        .main-nav {
18107            position: fixed;
18108            top: 0;
18109            left: 0;
18110            right: 0;
18111            background: rgba(26, 26, 26, 0.95);
18112            backdrop-filter: blur(20px);
18113            z-index: 1000;
18114            padding: 1rem 0;
18115            transition: var(--transition);
18116        }
18117
18118        .main-nav.scrolled {
18119            background: rgba(26, 26, 26, 0.98);
18120            box-shadow: var(--shadow-light);
18121        }
18122
18123        .nav-container {
18124            max-width: 1200px;
18125            margin: 0 auto;
18126            padding: 0 20px;
18127            display: flex;
18128            justify-content: space-between;
18129            align-items: center;
18130        }
18131
18132        .logo {
18133            display: flex;
18134            align-items: center;
18135            text-decoration: none;
18136        }
18137
18138        .logo img {
18139            height: 50px;
18140            width: auto;
18141            display: block;
18142        }
18143
18144        .nav-menu {
18145            display: flex;
18146            list-style: none;
18147            gap: 2rem;
18148        }
18149
18150        .nav-menu a {
18151            color: var(--text-light);
18152            text-decoration: none;
18153            font-weight: 500;
18154            transition: var(--transition);
18155            position: relative;
18156        }
18157
18158        .nav-menu a:hover {
18159            color: var(--secondary-color);
18160        }
18161
18162        .nav-menu a::after {
18163            content: '';
18164            position: absolute;
18165            bottom: -5px;
18166            left: 0;
18167            width: 0;
18168            height: 2px;
18169            background: var(--secondary-color);
18170            transition: var(--transition);
18171        }
18172
18173        .nav-menu a:hover::after {
18174            width: 100%;
18175        }
18176
18177        .mobile-menu-toggle {
18178            display: none;
18179            background: none;
18180            border: none;
18181            color: var(--text-light);
18182            font-size: 1.5rem;
18183            cursor: pointer;
18184        }
18185
18186        /* Page Container */
18187        .page-container {
18188            display: none;
18189        }
18190
18191        .page-container.active {
18192            display: block;
18193        }
18194
18195        /* Hero Section */
18196        .hero-section {
18197            min-height: 100vh;
18198            /* Lighter stop of --gradient-main (#667eea) — worst case for the
18199               white hero text below, 3.49:1. Testing convention: the ADA
18200               crawler can't see gradients (only background-color), so it
18201               falls through to a white default and reports white-on-white
18202               unless a solid stand-in is declared here. */
18203            --ada-contrast-bg: #667eea;
18204            background: var(--gradient-main);
18205            display: flex;
18206            align-items: center;
18207            justify-content: center;
18208            text-align: center;
18209            color: var(--text-light);
18210            position: relative;
18211            overflow: hidden;
18212        }
18213
18214        .hero-section::before {
18215            content: '';
18216            position: absolute;
18217            top: 0;
18218            left: 0;
18219            right: 0;
18220            bottom: 0;
18221            background: radial-gradient(circle at 50% 0%, rgba(255,255,255,0.1) 0%, transparent 50%);
18222            animation: shimmer 3s ease-in-out infinite;
18223        }
18224
18225        @keyframes shimmer {
18226            0%, 100% { opacity: 0.3; }
18227            50% { opacity: 0.8; }
18228        }
18229
18230        .hero-content {
18231            position: relative;
18232            z-index: 2;
18233            max-width: 800px;
18234            padding: 0 20px;
18235        }
18236
18237        .hero-title {
18238            font-size: clamp(3rem, 8vw, 6rem);
18239            margin-bottom: 1rem;
18240            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
18241            animation: fadeInUp 1s ease-out;
18242        }
18243
18244        .hero-subtitle {
18245            font-size: clamp(1.2rem, 3vw, 1.8rem);
18246            /* True bold (700) + >=18.66px qualifies as "large text" (3:1
18247               threshold), which this gradient's worst-case stop (3.49:1)
18248               clears — 600 ("semibold") wasn't recognized as bold enough,
18249               still measuring against the full 4.5:1. */
18250            font-weight: 700;
18251            margin-bottom: 2rem;
18252            opacity: 0.9;
18253            animation: fadeInUp 1s ease-out 0.3s both;
18254        }
18255
18256        .cta-button {
18257            display: inline-block;
18258            padding: 18px 40px;
18259            background: var(--secondary-color);
18260            /* white on --secondary-color (#ff6b35) is 2.85:1, below AA's 4.5:1 */
18261            color: #000;
18262            text-decoration: none;
18263            border-radius: 50px;
18264            font-weight: 600;
18265            font-size: 1.1rem;
18266            transition: var(--transition);
18267            box-shadow: var(--shadow-light);
18268            animation: fadeInUp 1s ease-out 0.6s both;
18269        }
18270
18271        .cta-button:hover {
18272            transform: translateY(-3px);
18273            box-shadow: var(--shadow-heavy);
18274            background: #e55a2b;
18275        }
18276
18277        @keyframes fadeInUp {
18278            from {
18279                opacity: 0;
18280                transform: translateY(30px);
18281            }
18282            to {
18283                opacity: 1;
18284                transform: translateY(0);
18285            }
18286        }
18287
18288        /* Sections */
18289        .section {
18290            padding: 80px 0;
18291        }
18292
18293        .section-dark {
18294            background: var(--background-dark);
18295            color: var(--text-light);
18296        }
18297
18298        .container {
18299            max-width: 1200px;
18300            margin: 0 auto;
18301            padding: 0 20px;
18302        }
18303
18304        .section-title {
18305            text-align: center;
18306            font-size: 2.5rem;
18307            margin-bottom: 3rem;
18308            position: relative;
18309        }
18310
18311        .section-title::after {
18312            content: '';
18313            position: absolute;
18314            bottom: -10px;
18315            left: 50%;
18316            transform: translateX(-50%);
18317            width: 80px;
18318            height: 3px;
18319            background: var(--secondary-color);
18320            border-radius: 2px;
18321        }
18322
18323        .about-content {
18324            max-width: 800px;
18325            margin: 0 auto;
18326            text-align: center;
18327            line-height: 1.8;
18328            color: #555;
18329        }
18330
18331        .about-content p {
18332            margin-bottom: 1.5rem;
18333            font-size: 1.1rem;
18334        }
18335
18336        /* Artists Gallery */
18337        .artists-gallery {
18338            display: grid;
18339            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
18340            gap: 2.5rem;
18341            margin-top: 3rem;
18342        }
18343
18344        .artist-card {
18345            position: relative;
18346            cursor: pointer;
18347            transition: var(--transition);
18348            background: white;
18349            border-radius: 20px;
18350            overflow: hidden;
18351            box-shadow: var(--shadow-light);
18352        }
18353
18354        .artist-card:hover {
18355            transform: translateY(-10px) scale(1.02);
18356            box-shadow: var(--shadow-heavy);
18357        }
18358
18359        .artist-image-wrapper {
18360            position: relative;
18361            width: 100%;
18362            aspect-ratio: 1;
18363            overflow: hidden;
18364        }
18365
18366        .artist-image {
18367            width: 100%;
18368            height: 100%;
18369            object-fit: cover;
18370            transition: transform 0.5s ease;
18371        }
18372
18373        .artist-card:hover .artist-image {
18374            transform: scale(1.1);
18375        }
18376
18377        .artist-overlay {
18378            position: absolute;
18379            bottom: 0;
18380            left: 0;
18381            right: 0;
18382            background: linear-gradient(to top, rgba(0,0,0,0.9), transparent);
18383            padding: 2rem 1.5rem 1.5rem;
18384            color: white;
18385            transition: var(--transition);
18386        }
18387
18388        .artist-stage-name {
18389            font-size: 1.5rem;
18390            font-weight: 700;
18391            margin-bottom: 0.3rem;
18392        }
18393
18394        .artist-role-badge {
18395            display: inline-block;
18396            background: var(--secondary-color);
18397            /* Inherited white from .artist-overlay is 2.15:1 on this bright
18398               orange (#ff6b35) badge bg, below AA's 4.5:1 — dark text clears it. */
18399            color: #000;
18400            padding: 4px 12px;
18401            border-radius: 15px;
18402            font-size: 0.75rem;
18403            font-weight: 600;
18404            text-transform: uppercase;
18405            letter-spacing: 0.5px;
18406        }
18407
18408        .artist-real-name {
18409            font-size: 0.9rem;
18410            opacity: 0.8;
18411            margin-top: 0.5rem;
18412        }
18413
18414        /* Individual Artist Bio Page */
18415        .bio-page {
18416            min-height: 100vh;
18417            padding-top: 100px;
18418            background: var(--background-light);
18419        }
18420
18421        .bio-header {
18422            background: var(--gradient-main);
18423            padding: 4rem 0;
18424            color: white;
18425            text-align: center;
18426            position: relative;
18427            overflow: hidden;
18428        }
18429
18430        .bio-header::before {
18431            content: '';
18432            position: absolute;
18433            top: 0;
18434            left: 0;
18435            right: 0;
18436            bottom: 0;
18437            background: radial-gradient(circle at 50% 0%, rgba(255,255,255,0.1) 0%, transparent 50%);
18438        }
18439
18440        .bio-header-content {
18441            position: relative;
18442            z-index: 2;
18443        }
18444
18445        .back-button {
18446            display: inline-block;
18447            padding: 10px 20px;
18448            background: rgba(255,255,255,0.2);
18449            color: white;
18450            text-decoration: none;
18451            border-radius: 25px;
18452            margin-bottom: 2rem;
18453            transition: var(--transition);
18454            font-weight: 500;
18455        }
18456
18457        .back-button:hover {
18458            background: rgba(255,255,255,0.3);
18459            transform: translateY(-2px);
18460        }
18461
18462        .bio-content {
18463            max-width: 900px;
18464            margin: -50px auto 0;
18465            position: relative;
18466            z-index: 10;
18467        }
18468
18469        .bio-card {
18470            background: white;
18471            border-radius: 20px;
18472            overflow: hidden;
18473            box-shadow: var(--shadow-heavy);
18474        }
18475
18476        .bio-image-section {
18477            padding: 3rem;
18478            text-align: center;
18479            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
18480        }
18481
18482        .bio-artist-image {
18483            width: 250px;
18484            height: 250px;
18485            border-radius: 50%;
18486            object-fit: cover;
18487            border: 5px solid white;
18488            box-shadow: var(--shadow-light);
18489        }
18490
18491        .bio-text-section {
18492            padding: 3rem;
18493        }
18494
18495        .bio-artist-title {
18496            text-align: center;
18497            margin-bottom: 2rem;
18498        }
18499
18500        .bio-artist-title h1 {
18501            font-size: 2.5rem;
18502            color: var(--text-dark);
18503            margin-bottom: 0.5rem;
18504        }
18505
18506        .bio-artist-title .stage-name {
18507            font-size: 1.2rem;
18508            /* --secondary-color (#ff6b35) as text on this white bio card is
18509               2.85:1, below AA's 4.5:1 — darkened for legibility */
18510            color: #a83e14;
18511            font-weight: 600;
18512            margin-bottom: 1rem;
18513        }
18514
18515        .bio-artist-title .role {
18516            display: inline-block;
18517            background: var(--accent-color);
18518            /* white on --accent-color (#f7931e) is 2.22:1, below AA's 4.5:1 */
18519            color: #000;
18520            padding: 8px 20px;
18521            border-radius: 20px;
18522            font-size: 0.9rem;
18523            font-weight: 600;
18524            text-transform: uppercase;
18525        }
18526
18527        .bio-description {
18528            line-height: 1.8;
18529            color: #555;
18530            font-size: 1.05rem;
18531        }
18532
18533        .bio-description p {
18534            margin-bottom: 1.5rem;
18535        }
18536
18537        /* Release Grid */
18538        .releases-grid {
18539            display: grid;
18540            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
18541            gap: 2rem;
18542            margin-top: 3rem;
18543        }
18544
18545        .release-card {
18546            background: var(--text-light);
18547            border-radius: 20px;
18548            overflow: hidden;
18549            box-shadow: var(--shadow-light);
18550            transition: var(--transition);
18551        }
18552
18553        .release-card:hover {
18554            transform: translateY(-10px);
18555            box-shadow: var(--shadow-heavy);
18556        }
18557
18558        .release-image {
18559            position: relative;
18560            overflow: hidden;
18561            aspect-ratio: 1;
18562            background: linear-gradient(45deg, #667eea, #764ba2);
18563            display: flex;
18564            align-items: center;
18565            justify-content: center;
18566            color: white;
18567            font-size: 4rem;
18568        }
18569
18570        .release-overlay {
18571            position: absolute;
18572            top: 0;
18573            left: 0;
18574            right: 0;
18575            bottom: 0;
18576            background: rgba(0,0,0,0.7);
18577            display: flex;
18578            align-items: center;
18579            justify-content: center;
18580            opacity: 0;
18581            transition: var(--transition);
18582        }
18583
18584        .release-card:hover .release-overlay {
18585            opacity: 1;
18586        }
18587
18588        .play-button {
18589            width: 60px;
18590            height: 60px;
18591            border-radius: 50%;
18592            background: var(--secondary-color);
18593            display: flex;
18594            align-items: center;
18595            justify-content: center;
18596            /* white on --secondary-color (#ff6b35) is 2.85:1 — fails even
18597               the large-text 3:1 threshold at this glyph's 1.5rem size */
18598            color: #000;
18599            font-size: 1.5rem;
18600            transition: var(--transition);
18601            cursor: pointer;
18602        }
18603
18604        .play-button:hover {
18605            transform: scale(1.1);
18606        }
18607
18608        .release-info {
18609            padding: 1.5rem;
18610        }
18611
18612        .release-title {
18613            font-size: 1.3rem;
18614            margin-bottom: 0.5rem;
18615            color: var(--text-dark);
18616        }
18617
18618        .release-date {
18619            color: #666;
18620            margin-bottom: 1rem;
18621            font-size: 0.9rem;
18622        }
18623
18624        .release-description {
18625            font-size: 0.9rem;
18626            color: #666;
18627            margin-bottom: 1rem;
18628            line-height: 1.4;
18629        }
18630
18631        .streaming-links {
18632            display: flex;
18633            gap: 0.5rem;
18634            flex-wrap: wrap;
18635        }
18636
18637        .streaming-link {
18638            padding: 8px 15px;
18639            background: var(--primary-color);
18640            color: var(--text-light);
18641            text-decoration: none;
18642            border-radius: 20px;
18643            font-size: 0.8rem;
18644            font-weight: 500;
18645            transition: var(--transition);
18646        }
18647
18648        .streaming-link:hover {
18649            background: var(--secondary-color);
18650            transform: translateY(-2px);
18651        }
18652
18653        /* Videos Grid */
18654        .videos-grid {
18655            display: grid;
18656            grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
18657            gap: 2rem;
18658            margin-top: 3rem;
18659        }
18660
18661        .video-card {
18662            background: var(--text-light);
18663            border-radius: 15px;
18664            overflow: hidden;
18665            box-shadow: var(--shadow-light);
18666            transition: var(--transition);
18667        }
18668
18669        .video-card:hover {
18670            transform: translateY(-5px);
18671            box-shadow: var(--shadow-heavy);
18672        }
18673
18674        .video-embed {
18675            position: relative;
18676            padding-bottom: 56.25%;
18677            height: 0;
18678            overflow: hidden;
18679            background: linear-gradient(45deg, #ff6b35, #f7931e);
18680            display: flex;
18681            align-items: center;
18682            justify-content: center;
18683            color: white;
18684            font-size: 3rem;
18685        }
18686
18687        .video-info {
18688            padding: 1.5rem;
18689        }
18690
18691        .video-type {
18692            display: inline-block;
18693            padding: 4px 12px;
18694            background: var(--accent-color);
18695            /* white on --accent-color (#f7931e) is 2.22:1, below AA's 4.5:1 */
18696            color: #000;
18697            border-radius: 15px;
18698            font-size: 0.7rem;
18699            font-weight: 600;
18700            text-transform: uppercase;
18701            margin-bottom: 0.5rem;
18702        }
18703
18704        .video-title {
18705            font-size: 1.2rem;
18706            margin-bottom: 0.5rem;
18707            color: var(--text-dark);
18708        }
18709
18710        .video-link {
18711            display: inline-block;
18712            margin-top: 1rem;
18713            /* --secondary-color (#ff6b35) as text on this white card is
18714               2.85:1, below AA's 4.5:1 — darkened for legibility */
18715            color: #a83e14;
18716            text-decoration: none;
18717            font-weight: 600;
18718        }
18719
18720        .view-all-btn {
18721            text-align: center;
18722            margin-top: 3rem;
18723        }
18724
18725        .view-all-btn a {
18726            display: inline-block;
18727            padding: 15px 35px;
18728            background: var(--secondary-color);
18729            /* white on --secondary-color (#ff6b35) is 2.85:1, below AA's 4.5:1 */
18730            color: #000;
18731            text-decoration: none;
18732            border-radius: 30px;
18733            font-weight: 600;
18734            transition: var(--transition);
18735        }
18736
18737        .view-all-btn a:hover {
18738            background: #e55a2b;
18739            transform: translateY(-3px);
18740        }
18741
18742        /* News Grid */
18743        .news-grid {
18744            display: grid;
18745            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
18746            gap: 2rem;
18747            margin-top: 3rem;
18748        }
18749
18750        .news-card {
18751            background: var(--text-light);
18752            border-radius: 15px;
18753            overflow: hidden;
18754            box-shadow: var(--shadow-light);
18755            transition: var(--transition);
18756        }
18757
18758        .news-card:hover {
18759            transform: translateY(-5px);
18760            box-shadow: var(--shadow-heavy);
18761        }
18762
18763        .news-image {
18764            height: 200px;
18765            background: linear-gradient(45deg, #764ba2, #667eea);
18766            display: flex;
18767            align-items: center;
18768            justify-content: center;
18769            color: white;
18770            font-size: 2rem;
18771        }
18772
18773        .news-content {
18774            padding: 1.5rem;
18775        }
18776
18777        .news-title {
18778            font-size: 1.2rem;
18779            margin-bottom: 0.5rem;
18780            color: var(--text-dark);
18781        }
18782
18783        .news-date {
18784            color: #666;
18785            font-size: 0.9rem;
18786            margin-bottom: 1rem;
18787        }
18788
18789        .news-excerpt {
18790            color: #555;
18791            line-height: 1.5;
18792            margin-bottom: 1rem;
18793        }
18794
18795        .read-more {
18796            /* --secondary-color (#ff6b35) as text on this white card is
18797               2.85:1, below AA's 4.5:1 — darkened for legibility */
18798            color: #a83e14;
18799            text-decoration: none;
18800            font-weight: 600;
18801            transition: var(--transition);
18802        }
18803
18804        .read-more:hover {
18805            color: var(--accent-color);
18806        }
18807
18808        /* Footer */
18809        .main-footer {
18810            background: var(--primary-color);
18811            color: var(--text-light);
18812            padding: 3rem 0 1rem;
18813            text-align: center;
18814        }
18815
18816        .footer-content {
18817            margin-bottom: 2rem;
18818        }
18819
18820        .social-links {
18821            display: flex;
18822            justify-content: center;
18823            gap: 1rem;
18824            margin-bottom: 2rem;
18825        }
18826
18827        .social-link {
18828            width: 50px;
18829            height: 50px;
18830            border-radius: 50%;
18831            background: var(--secondary-color);
18832            /* This badge is opaque, so contrast is against its OWN bg, not
18833               the page behind it — white on --secondary-color (#ff6b35) is
18834               2.85:1, below AA's 4.5:1, regardless of the dark footer. */
18835            color: #000;
18836            display: flex;
18837            align-items: center;
18838            justify-content: center;
18839            text-decoration: none;
18840            font-size: 1.2rem;
18841            transition: var(--transition);
18842        }
18843
18844        .social-link:hover {
18845            background: var(--accent-color);
18846            transform: translateY(-3px);
18847        }
18848
18849        .footer-bottom {
18850            border-top: 1px solid #333;
18851            padding-top: 1rem;
18852            color: #999;
18853            font-size: 0.9rem;
18854        }
18855
18856        .footer-handle {
18857            margin-top: 0.5rem;
18858        }
18859
18860        .footer-handle a {
18861            color: var(--secondary-color);
18862            text-decoration: none;
18863        }
18864
18865        /* Responsive */
18866        @media (max-width: 768px) {
18867            .mobile-menu-toggle {
18868                display: block;
18869            }
18870            
18871            .nav-menu {
18872                position: fixed;
18873                top: 100%;
18874                left: 0;
18875                right: 0;
18876                background: var(--primary-color);
18877                flex-direction: column;
18878                padding: 2rem;
18879                transform: translateY(-100%);
18880                opacity: 0;
18881                visibility: hidden;
18882                transition: var(--transition);
18883            }
18884            
18885            .nav-menu.active {
18886                transform: translateY(0);
18887                opacity: 1;
18888                visibility: visible;
18889            }
18890
18891            .section {
18892                padding: 60px 0;
18893            }
18894
18895            .artists-gallery {
18896                grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
18897                gap: 1.5rem;
18898            }
18899            
18900            .releases-grid,
18901            .videos-grid,
18902            .news-grid {
18903                grid-template-columns: 1fr;
18904                gap: 1.5rem;
18905            }
18906
18907            .hero-section {
18908                min-height: 80vh;
18909            }
18910
18911            .bio-artist-image {
18912                width: 200px;
18913                height: 200px;
18914            }
18915
18916            .bio-text-section {
18917                padding: 2rem 1.5rem;
18918            }
18919        }
18920    
18921    .ev-nw-badge{position:fixed;bottom:72px;right:20px;z-index:9999;display:inline-flex;align-items:center;gap:5px;padding:8px 14px;background:rgba(2,2,8,.9);border:1px solid rgba(255,255,255,.14);border-radius:100px;font-size:.68rem;font-weight:600;color:rgba(255,255,255,.55);text-decoration:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);letter-spacing:.06em;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}
18922.ev-nw-badge:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(2,2,8,.97)}
18923.ev-nw-badge-mark{width:14px;
18923height:14px;display:grid;grid-template-columns:1fr 1fr;gap:2px;flex-shrink:0}
18924.ev-nw-badge-mark span{background:currentColor;border-radius:2px;display:block}
18925  </style>
18926    <a href="https://echovira.com" class="ev-nw-badge" target="_blank" rel="noopener" title="EchoVira Music Network">
18927  <div class="ev-nw-badge-mark"><span></span><span></span><span></span><span></span></div>
18928  EchoVira
18929</a>
18930
18931        <nav class="main-nav" id="mainNav">
18932        <div class="nav-container">
18933            <a href="#home" class="logo" data-action="back">
18934                <img src="https://media.echovira.com/echovira/pulseborn_logo.png" alt="Pulseborn"
18935                srcset="https://media.echovira.com/echovira/pulseborn_logo-400.webp 400w, https://media.echovira.com/echovira/pulseborn_logo-800.webp 800w, https://media.echovira.com/echovira/pulseborn_logo-full.webp 1024w"
18936                sizes="50px" width="1024" height="1024" decoding="async">
18937            </a>
18938            <ul class="nav-menu" id="navMenu">
18939                <li><a href="#home" data-action="back">Home</a></li>
18940                <li><a href="#about">About</a></li>
18941                <li><a href="#artists">Artists</a></li>
18942                <li><a href="#releases">Releases</a></li>
18943                <li><a href="#videos">Videos</a></li>
18944                <li><a href="#news">News</a></li>
18945            </ul>
18946            <button class="mobile-menu-toggle" id="mobileToggle">☰</button>
18947        </div>
18948    </nav>
18949
18950    <span id="main-content" tabindex="-1"></span>
18951
18952    <div id="mainPage" class="page-container active">
18953        <section class="hero-section" id="home">
18954            <div class="hero-content">
18955                <h1 class="hero-title">Pulseborn</h1>
18956                <p class="hero-subtitle">Where Analog Warmth Meets Digital Precision</p>
18957                <a href="#releases" class="cta-button">Explore Our Sound</a>
18958            </div>
18959        </section>
18960
18961        <section class="section" id="about">
18962            <div class="container">
18963                <h2 class="section-title">About Pulseborn</h2>
18964                <div class="about-content">
18965                    <p>
18966                        Pulseborn emerged from the underground electronic scene with a mission to blur the boundaries between organic and synthetic sound. Our collective brings together producers, sound designers, and vocalists who share a passion for crafting immersive sonic experiences that resonate on both emotional and physical levels.
18967                    </p>
18968                    <p>
18969                        Drawing inspiration from ambient textures, progressive house rhythms, and cinematic soundscapes, we create music that tells stories without words—yet speaks volumes. Each release is a carefully curated journey through layers of synthesized melodies, pulsing basslines, and ethereal atmospheres designed to transport listeners beyond the ordinary.
18970                    </p>
18971                    <p>
18972                        From intimate club nights to festival main stages, Pulseborn has been pushing the envelope of electronic music, building a community of listeners who crave depth, authenticity, and innovation in every beat.
18973                    </p>
18974                </div>
18975            </div>
18976        </section>
18977
18978        <section class="section" id="artists">
18979            <div class="container">
18980                <h2 class="section-title">The Collective</h2>
18981                <div class="artists-gallery" id="artistsGallery">
18982<div class="artist-card" data-artist-id="austin-blake" style="cursor:pointer">
18983                    <div class="artist-image-wrapper">
18984                        <img src="https://media.echovira.com/pulseborn/pulseborn_austin_blake_male_singer_portrait_0.png" alt="Austin Blake" class="artist-image"
18985                srcset="https://media.echovira.com/pulseborn/pulseborn_austin_blake_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_austin_blake_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_austin_blake_male_singer_portrait_0-full.webp 1024w"
18986                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
18987                        <div class="artist-overlay">
18988                            <div class="artist-stage-name">Blaze</div>
18989                            <div class="artist-role-badge">Male Singer</div>
18990                            <div class="artist-real-name">Austin Blake</div>
18991                        </div>
18992                    </div>
18993                </div><div class="artist-card" data-artist-id="hailey-scott" style="cursor:pointer">
18994                    <div class="artist-image-wrapper">
18995                        <img src="https://media.echovira.com/pulseborn/pulseborn_hailey_scott_female_singer_portrait_0.png" alt="Hailey Scott" class="artist-image"
18996                srcset="https://media.echovira.com/pulseborn/pulseborn_hailey_scott_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_hailey_scott_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_hailey_scott_female_singer_portrait_0-full.webp 1024w"
18997                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
18998                        <div class="artist-overlay">
18999                            <div class="artist-stage-name">Hailey Sky</div>
19000                            <div class="artist-role-badge">Female Singer</div>
19001                            <div class="artist-real-name">Hailey Scott</div>
19002                        </div>
19003                    </div>
19004                </div><div class="artist-card" data-artist-id="harper-lane" style="cursor:pointer">
19005                    <div class="artist-image-wrapper">
19006                        <img src="https://media.echovira.com/pulseborn/pulseborn_harper_lane_multi_instrumentalist_portrait_1.png" alt="Harper Lane" class="artist-image"
19007                srcset="https://media.echovira.com/pulseborn/pulseborn_harper_lane_multi_instrumentalist_portrait_1-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_harper_lane_multi_instrumentalist_portrait_1-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_harper_lane_multi_instrumentalist_portrait_1-full.webp 1024w"
19008                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
19009                        <div class="artist-overlay">
19010                            <div class="artist-stage-name">Harper</div>
19011                            <div class="artist-role-badge">Multi-Instrumentalist</div>
19012                            <div class="artist-real-name">Harper Lane</div>
19013                        </div>
19014                    </div>
19015                </div><div class="artist-card" data-artist-id="hunter-cole" style="cursor:pointer">
19016                    <div class="artist-image-wrapper">
19017                        <img src="https://media.echovira.com/pulseborn/pulseborn_hunter_cole_male_singer_portrait_2.png" alt="Hunter Cole" class="artist-image"
19018                srcset="https://media.echovira.com/pulseborn/pulseborn_hunter_cole_male_singer_portrait_2-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_hunter_cole_male_singer_portrait_2-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_hunter_cole_male_singer_portrait_2-full.webp 1024w"
19019                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
19020                        <div class="artist-overlay">
19021                            <div class="artist-stage-name">Hunter</div>
19022                            <div class="artist-role-badge">Male Singer</div>
19023                            <div class="artist-real-name">Hunter Cole</div>
19024                        </div>
19025                    </div>
19026                </div><div class="artist-card" data-artist-id="jackson-reed" style="cursor:pointer">
19027                    <div class="artist-image-wrapper">
19028                        <img src="https://media.echovira.com/pulseborn/pulseborn_jackson_reed_male_singer_portrait_0.png" alt="Jackson Reed" class="artist-image"
19029                srcset="https://media.echovira.com/pulseborn/pulseborn_jackson_reed_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_jackson_reed_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_jackson_reed_male_singer_portrait_0-full.
19029webp 1024w"
19030                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
19031                        <div class="artist-overlay">
19032                            <div class="artist-stage-name">Jax</div>
19033                            <div class="artist-role-badge">Male Singer</div>
19034                            <div class="artist-real-name">Jackson Reed</div>
19035                        </div>
19036                    </div>
19037                </div><div class="artist-card" data-artist-id="juliette-monroe" style="cursor:pointer">
19038                    <div class="artist-image-wrapper">
19039                        <img src="https://media.echovira.com/pulseborn/pulseborn_juliette_monroe_composerlyricist_portrait_1.png" alt="Juliette Monroe" class="artist-image"
19040                srcset="https://media.echovira.com/pulseborn/pulseborn_juliette_monroe_composerlyricist_portrait_1-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_juliette_monroe_composerlyricist_portrait_1-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_juliette_monroe_composerlyricist_portrait_1-full.webp 1024w"
19041                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
19042                        <div class="artist-overlay">
19043                            <div class="artist-stage-name">Juliette</div>
19044                            <div class="artist-role-badge">Composer/Lyricist</div>
19045                            <div class="artist-real-name">Juliette Monroe</div>
19046                        </div>
19047                    </div>
19048                </div><div class="artist-card" data-artist-id="lila-morgan" style="cursor:pointer">
19049                    <div class="artist-image-wrapper">
19050                        <img src="https://media.echovira.com/pulseborn/pulseborn_lila_morgan_female_singer_portrait_2.png" alt="Lila Morgan" class="artist-image"
19051                srcset="https://media.echovira.com/pulseborn/pulseborn_lila_morgan_female_singer_portrait_2-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_lila_morgan_female_singer_portrait_2-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_lila_morgan_female_singer_portrait_2-full.webp 1024w"
19052                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
19053                        <div class="artist-overlay">
19054                            <div class="artist-stage-name">Lila Rose</div>
19055                            <div class="artist-role-badge">Female Singer</div>
19056                            <div class="artist-real-name">Lila Morgan</div>
19057                        </div>
19058                    </div>
19059                </div><div class="artist-card" data-artist-id="logan-price" style="cursor:pointer">
19060                    <div class="artist-image-wrapper">
19061                        <img src="https://media.echovira.com/pulseborn/pulseborn_logan_price_male_singer_portrait_0.png" alt="Logan Price" class="artist-image"
19062                srcset="https://media.echovira.com/pulseborn/pulseborn_logan_price_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_logan_price_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_logan_price_male_singer_portrait_0-full.webp 1024w"
19063                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
19064                        <div class="artist-overlay">
19065                            <div class="artist-stage-name">Logan</div>
19066                            <div class="artist-role-badge">Male Singer</div>
19067                            <div class="artist-real-name">Logan Price</div>
19068                        </div>
19069                    </div>
19070                </div><div class="artist-card" data-artist-id="madison-lane" style="cursor:pointer">
19071                    <div class="artist-image-wrapper">
19072                        <img src="https://media.echovira.com/pulseborn/pulseborn_madison_lane_female_singer_portrait_2.png" alt="Madison Lane" class="artist-image"
19073                srcset="https://media.echovira.com/pulseborn/pulseborn_madison_lane_female_singer_portrait_2-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_madison_lane_female_singer_portrait_2-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_madison_lane_female_singer_portrait_2-full.webp 1024w"
19074                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
19075                        <div class="artist-overlay">
19076                            <div class="artist-stage-name">Madi</div>
19077                            <div class="artist-role-badge">Female Singer</div>
19078                            <div class="artist-real-name">Madison Lane</div>
19079                        </div>
19080                    </div>
19081                </div><div class="artist-card" data-artist-id="paige-carter" style="cursor:pointer">
19082                    <div class="artist-image-wrapper">
19083                        <img src="https://media.echovira.com/pulseborn/pulseborn_paige_carter_female_singer_portrait_0.png" alt="Paige Carter" class="artist-image"
19084                srcset="https://media.echovira.com/pulseborn/pulseborn_paige_carter_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_paige_carter_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_paige_carter_female_singer_portrait_0-full.webp 1024w"
19085                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
19086                        <div class="artist-overlay">
19087                            <div class="artist-stage-name">Paige</div>
19088                            <div class="artist-role-badge">Female Singer</div>
19089                            <div class="artist-real-name">Paige Carter</div>
19090                        </div>
19091                    </div>
19092                </div><div class="artist-card" data-artist-id="ryder-james" style="cursor:pointer">
19093                    <div class="artist-image-wrapper">
19094                        <img src="https://media.echovira.com/pulseborn/pulseborn_ryder_james_male_singer_portrait_0.png" alt="Ryder James" class="artist-image"
19095                srcset="https://media.echovira.com/pulseborn/pulseborn_ryder_james_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_ryder_james_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_ryder_james_male_singer_portrait_0-full.webp 1024w"
19096                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
19097                        <div class="artist-overlay">
19098                            <div class="artist-stage-name">Ryder</div>
19099                            <div class="artist-role-badge">Male Singer</div>
19100                            <div class="artist-real-name">Ryder James</div>
19101                        </div>
19102                    </div>
19103                </div><div class="artist-card" data-artist-id="sierra-monroe" style="cursor:pointer">
19104                    <div class="artist-image-wrapper">
19105                        <img src="https://media.echovira.com/pulseborn/pulseborn_sierra_monroe_female_singer_portrait_1.png" alt="Sierra Monroe" class="artist-image"
19106                srcset="https://media.echovira.com/pulseborn/pulseborn_sierra_monroe_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_sierra_monroe_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_sierra_monroe_female_singer_portrait_1-full.webp 1024w"
19107                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
19108                        <div class="artist-overlay">
19109                            <div class="artist-stage-name">Sierra</div>
19110                            <div class="artist-role-badge">Female Singer</div>
19111                            <div class="artist-real-name">Sierra Monroe</div>
19112                        </div>
19113                    </div>
19114                </div>
19115</div>
19116            </div>
19117        </section>
19118
19119        <section class="section" id="releases">
19120            <div class="container">
19121                <h2 class="section-title">Latest Releases</h2>
19122                <div class="releases-grid">
19123                    <div class="release-card">
19124                        <div class="release-image">
19125                            🎵
19126                            <div class="release-overlay">
19127                                <div class="play-button" onclick="playDemo()">▶</div>
19128                            </div>
19129                        </div>
19130                        <div class="release-info">
19131                            <h3 class="release-title">Midnight Echoes</h3>
19132                            <p class="release-date">December 1, 2024</p>
19133                            <p class="release-description">A hypnotic journey through nocturnal soundscapes, featuring deep basslines and shimmering synth textures.</p>
19134                            <div class="streaming-links">
19135                                <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="streaming-link">Spotify</a>
19136                                <a href="https://music.apple.com/us/artist/pulseborn/1847808471" target="_blank" class="streaming-link">Apple Music</a>
19137                                <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="streaming-link">YouTube</a>
19138                                <a href="https://tidal.com/browse/artist/66891676" target="_blank" class="streaming-link">Tidal</a>
19139                            </div>
19140                        </div>
19141                    </div>
19142
19143                    <div class="release-card">
19144                        <div class="release-image">
19145                            🌊
19146                            <div class="release-overlay">
19147                                <div class="play-button" onclick="playDemo()">▶</div>
19148                            </div>
19149                        </div>
19150                        <div class="release-info">
19151                            <h3 class="release-title">Digital Waves</h3>
19152                            <p class="release-date">October 15, 2024</p>
19153                            <p class="release-description">Progressive house meets ambient electronica in this fluid exploration of rhythm and space.</p>
19154                            <div class="streaming-links">
19155                                <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="streaming-link">Spotify</a>
19156                                <a href="https://music.apple.com/us/artist/pulseborn/1847808471" target="_blank" class="streaming-link">Apple Music</a>
19157                                <a href="https://tidal.com/browse/artist/66891676" target="_blank" class="streaming-link">Tidal</a>
19158                            </div>
19159                        </div>
19160                    </div>
19161
19162                    <div class="release-card">
19163                        <div class="release-image">
19164                            ⚡
19165                            <div class="release-overlay">
19166                                <div class="play-button" onclick="playDemo()">▶</div>
19167                            </div>
19168                        </div>
19169                        <div class="release-info">
19170                            <h3 class="release-title">Electric Dreams EP</h3>
19171                            <p class="release-date">August 20, 2024</p>
19172                            <p class="release-description">Four tracks of pure energy—our most dancefloor-focused release to date, designed for peak-time moments.</p>
19173                            <div class="streaming-links">
19174                                <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="streaming-link">Spotify</a>
19175                                <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="streaming-link">YouTube</a>
19176                                <a href="https://tidal.com/browse/artist/66891676" target="_blank" class="streaming-link">Tidal</a>
19177                            </div>
19178                        </div>
19179                    </div>
19180                </div>
19181            </div>
19182        </section>
19183
19184        <section class="section section-dark" id="videos">
19185            <div class="container">
19186                <h2 class="section-title">Latest Videos</h2>
19187                <div class="videos-grid">
19188                    <div class="video-card">
19189                        <div class="video-embed">
19190                            📹
19191                        </div>
19192                        <div class="video-info">
19193                            <span class="video-type">Music Video</span>
19194                            <h3 class="video-title">Midnight Echoes (Official Video)</h3>
19195                            <p>Experience our latest single with cinematic visuals that capture the essence of late-night introspection and urban solitude.</p>
19196                            <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="video-link">Watch on YouTube →</a>
19197                        </div>
19198                    </div>
19199
19200                    <div class="video-card">
19201                        <div class="video-embed">
19202                            🎬
19203                        </div>
19204                        <div class="video-info">
19205                            <span class="video-type">Behind the Scenes</span>
19206                            <h3 class="video-title">Studio Diary: Making Digital Waves</h3>
19207                            <p>Go inside our creative process as we break down the production techniques and gear behind our most ambitious track yet.</p>
19208                            <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="video-link">Watch on YouTube →</a>
19209                        </div>
19210                    </div>
19211                </div>
19212                <div class="view-all-btn">
19213                    <a href="https://www.youtube.com/@Pulseborn" target="_blank">View All Videos on YouTube</a>
19214                </div>
19215            </div>
19216        </section>
19217
19218        <section class="section section-dark" id="news">
19219            <div class="container">
19220                <h2 class="section-title">Latest News</h2>
19221                <div class="news-grid">
19222                    <div class="news-card">
19223                        <div class="news-image">
19224                            📰
19225                        </div>
19226                        <div class="news-content">
19227                            <h3 class="news-title">New Single "Midnight Echoes" Breaks Streaming Records</h3>
19228                            <p class="news-date">December 5, 2024</p>
19229                            <p class="news-excerpt">Our latest release has surpassed 100K streams in its first week across all platforms. Thank you for the incredible support—this is just the beginning...</p>
19230                            <a href="#" class="read-more">Read More</a>
19231                        </div>
19232                    </div>
19233
19234                    <div class="news-card">
19235                        <div class="news-image">
19236                            🎪
19237                        </div>
19238                        <div class="news-content">
19239                            <h3 class="news-title">2025 Tour Dates Announced</h3>
19240                            <p class="news-date">November 20, 2024</p>
19241                            <p class="news-excerpt">We're hitting the road next year! Check out our upcoming shows across North America and Europe. Presale tickets available now for early supporters...</p>
19242                            <a href="#" class="read-more">Read More</a>
19243                        </div>
19244                    </div>
19245
19246                    <div class="news-card">
19247                        <div class="news-image">
19248                            🎙️
19249                        </div>
19250                        <div class="news-content">
19251                            <h3 class="news-title">Behind the Music: Studio Diary Series Launches</h3>
19252                            <p class="news-date">October 28, 2024</p>
19253                            <p class="news-excerpt">Follow our journey in the studio as we craft our upcoming album. New episodes drop every Tuesday on YouTube, featuring exclusive insights into our creative process...</p>
19254                            <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="read-more">Watch Now</a>
19255                        </div>
19256                    </div>
19257                </div>
19258            </div>
19259        </section>
19260
19261        <footer class="main-footer">
19262            <div class="container">
19263                <div class="footer-content">
19264                    <div class="social-links">
19265                        <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="social-link" title="YouTube">📺</a>
19266                        <a href="https://www.instagram.com/pulsebornofficial/" target="_blank" class="social-link" title="Instagram">📷</a>
19267                        <a href="https://www.tiktok.com/@pulseborn" target="_blank" class="social-link" title="TikTok">🎵</a>
19268                        <a href="https://www.facebook.com/Pulsebornofficial" target="_blank" class="social-link" title="Facebook">👥</a>
19269                        <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="social-link" title="Spotify">🎧</a>
19270                    </div>
19271                </div>
19272                <div class="footer-bottom">
19273                    <p>&copy; 2024-2025 Pulseborn. All rights reserved.</p>
19274                    <p class="footer-handle">
19275                        <a href="https://www.instagram.com/pulsebornofficial/" target="_blank">@pulsebornofficial</a>
19276                    </p>
19277                </div>
19278            </div>
19279        </footer>
19280    </div>
19281
19282    <div id="bioPages">
19283<div id="bio-austin-blake" class="page-container bio-page">
19284                    <div class="bio-header">
19285                        <div class="bio-header-content">
19286                            <div class="container">
19287                                <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
19288                            </div>
19289                        </div>
19290                    </div>
19291                    
19292                    <div class="bio-content">
19293                        <div class="container">
19294                            <div class="bio-card">
19295                                <div class="bio-image-section">
19296                                    <img src="https://media.echovira.com/pulseborn/pulseborn_austin_blake_male_singer_portrait_0.png" alt="Austin Blake" class="bio-artist-image"
19297                srcset="https://media.echovira.com/pulseborn/pulseborn_austin_blake_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_austin_blake_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_austin_blake_male_singer_portrait_0-full.
19297webp 1024w"
19298                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
19299                                </div>
19300                                <div class="bio-text-section">
19301                                    <div class="bio-artist-title">
19302                                        <h1>Austin Blake</h1>
19303                                        <div class="stage-name">"Blaze" • Age 26</div>
19304                                        <div class="role">Male Singer</div>
19305                                    </div>
19306                                    <div class="bio-description">
19307                                        <p>Meet Blaze — the new voice of Pulseborn. Austin Blake, 26, brings raw heat to every song. A fiery, high-energy rocker whose gravelly vocals cut through the mix. His gritty timbre and wide range let him switch from punchy shouts to controlled, melodic lines; dynamic phrasing and a commanding stage presence keep crowds locked in. Influenced by punk attitude and classic rock grit, he uses controlled rasp, dynamic swells, and precise phrasing to balance melody with edge.</p><p>Blaze's voice shapes Pulseborn's sound—adding contrast to heavy riffs and lifting choruses into big singalongs—so every live set feels immediate and fierce.</p><p>His raw tone, wide range and relentless stage energy give our songs their edge, turning hooks into cathartic anthems. As Pulseborn's lead vocalist he anchors melodies, pushes dynamics and brings every lyric to life on record and on stage.</p>
19308                                    </div>
19309                                </div>
19310                            </div>
19311                        </div>
19312                    </div>
19313                    
19314                    <footer class="main-footer">
19315                        <div class="container">
19316                            <div class="footer-content">
19317                                <div class="social-links">
19318                                    <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="social-link">📺</a>
19319                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank" class="social-link">📷</a>
19320                                    <a href="https://www.tiktok.com/@pulseborn" target="_blank" class="social-link">🎵</a>
19321                                    <a href="https://www.facebook.com/Pulsebornofficial" target="_blank" class="social-link">👥</a>
19322                                    <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="social-link">🎧</a>
19323                                </div>
19324                            </div>
19325                            <div class="footer-bottom">
19326                                <p>&copy; 2024-2025 Pulseborn. All rights reserved.</p>
19327                                <p class="footer-handle">
19328                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank">@pulsebornofficial</a>
19329                                </p>
19330                            </div>
19331                        </div>
19332                    </footer>
19333                </div>
19334<div id="bio-hailey-scott" class="page-container bio-page">
19335                    <div class="bio-header">
19336                        <div class="bio-header-content">
19337                            <div class="container">
19338                                <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
19339                            </div>
19340                        </div>
19341                    </div>
19342                    
19343                    <div class="bio-content">
19344                        <div class="container">
19345                            <div class="bio-card">
19346                                <div class="bio-image-section">
19347                                    <img src="https://media.echovira.com/pulseborn/pulseborn_hailey_scott_female_singer_portrait_0.png" alt="Hailey Scott" class="bio-artist-image"
19348                srcset="https://media.echovira.com/pulseborn/pulseborn_hailey_scott_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_hailey_scott_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_hailey_scott_female_singer_portrait_0-full.
19348webp 1024w"
19349                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
19350                                </div>
19351                                <div class="bio-text-section">
19352                                    <div class="bio-artist-title">
19353                                        <h1>Hailey Scott</h1>
19354                                        <div class="stage-name">"Hailey Sky" • Age 24</div>
19355                                        <div class="role">Female Singer</div>
19356                                    </div>
19357                                    <div class="bio-description">
19358                                        <p>Meet Hailey Sky — Pulseborn's warm heart with an inviting, approachable charm. Her clear, expressive timbre and flexible range add a brighter top end and an emotional center to Pulseborn's arrangements, reshaping the way melodies land. On stage, her phrasing and dynamic control turn quiet moments into intimate stories and choruses into full-band lifts, boosting the live energy every night.</p><p>Her voice blends honeyed warmth and soaring power — intimate on the verses, explosive on the choruses, and always full of honest emotion. As Pulseborn's lead vocalist she shapes melodies, lifts arrangements, and gives our sound its human pulse and cinematic sweep.</p><p>As a vocalist, Hailey blends a warm, clear tone with nuanced phrasing, controlled dynamics, and stage presence influenced by indie-pop and soul — she supports the band while making each line distinctly hers.</p>
19359                                    </div>
19360                                </div>
19361                            </div>
19362                        </div>
19363                    </div>
19364                    
19365                    <footer class="main-footer">
19366                        <div class="container">
19367                            <div class="footer-content">
19368                                <div class="social-links">
19369                                    <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="social-link">📺</a>
19370                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank" class="social-link">📷</a>
19371                                    <a href="https://www.tiktok.com/@pulseborn" target="_blank" class="social-link">🎵</a>
19372                                    <a href="https://www.facebook.com/Pulsebornofficial" target="_blank" class="social-link">👥</a>
19373                                    <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="social-link">🎧</a>
19374                                </div>
19375                            </div>
19376                            <div class="footer-bottom">
19377                                <p>&copy; 2024-2025 Pulseborn. All rights reserved.</p>
19378                                <p class="footer-handle">
19379                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank">@pulsebornofficial</a>
19380                                </p>
19381                            </div>
19382                        </div>
19383                    </footer>
19384                </div>
19385<div id="bio-harper-lane" class="page-container bio-page">
19386                    <div class="bio-header">
19387                        <div class="bio-header-content">
19388                            <div class="container">
19389                                <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
19390                            </div>
19391                        </div>
19392                    </div>
19393                    
19394                    <div class="bio-content">
19395                        <div class="container">
19396                            <div class="bio-card">
19397                                <div class="bio-image-section">
19398                                    <img src="https://media.echovira.com/pulseborn/pulseborn_harper_lane_multi_instrumentalist_portrait_1.png" alt="Harper Lane" class="bio-artist-image"
19399                srcset="https://media.echovira.com/pulseborn/pulseborn_harper_lane_multi_instrumentalist_portrait_1-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_harper_lane_multi_instrumentalist_portrait_1-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_harper_lane_multi_instrumentalist_portrait_1-full.
19399webp 1024w"
19400                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
19401                                </div>
19402                                <div class="bio-text-section">
19403                                    <div class="bio-artist-title">
19404                                        <h1>Harper Lane</h1>
19405                                        <div class="stage-name">"Harper" • Age 26</div>
19406                                        <div class="role">Multi-Instrumentalist</div>
19407                                    </div>
19408                                    <div class="bio-description">
19409                                        <p>Meet Harper Lane — Harper, 26, Pulseborn's multi-instrumentalist. A fearless multi-instrumentalist whose raw musicality cuts straight to the core. From guitar riffs and synth textures to heartbeat grooves on bass and keys, Harper brings a rare technical mastery and emotive touch to every track.</p><p>Harper's layered playing and textural choices are central to Pulseborn's sound, giving our songs depth and our live shows restless, kinetic energy. On stage Harper switches seamlessly between instruments, locking grooves and adding hallmark riffs that lift every chorus.</p><p>Their playing is the secret thread that ties our songs together, adding depth, dynamics, and unexpected color to the Pulseborn sound. As a composer Harper crafts memorable melodies and tight arrangements, favoring motifs and progressions that give songs unmistakable hooks. In the studio they shape the sonic space with focused layering and dynamic choices that make each track breathe.</p>
19410                                    </div>
19411                                </div>
19412                            </div>
19413                        </div>
19414                    </div>
19415                    
19416                    <footer class="main-footer">
19417                        <div class="container">
19418                            <div class="footer-content">
19419                                <div class="social-links">
19420                                    <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="social-link">📺</a>
19421                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank" class="social-link">📷</a>
19422                                    <a href="https://www.tiktok.com/@pulseborn" target="_blank" class="social-link">🎵</a>
19423                                    <a href="https://www.facebook.com/Pulsebornofficial" target="_blank" class="social-link">👥</a>
19424                                    <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="social-link">🎧</a>
19425                                </div>
19426                            </div>
19427                            <div class="footer-bottom">
19428                                <p>&copy; 2024-2025 Pulseborn. All rights reserved.</p>
19429                                <p class="footer-handle">
19430                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank">@pulsebornofficial</a>
19431                                </p>
19432                            </div>
19433                        </div>
19434                    </footer>
19435                </div>
19436<div id="bio-hunter-cole" class="page-container bio-page">
19437                    <div class="bio-header">
19438                        <div class="bio-header-content">
19439                            <div class="container">
19440                                <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
19441                            </div>
19442                        </div>
19443                    </div>
19444                    
19445                    <div class="bio-content">
19446                        <div class="container">
19447                            <div class="bio-card">
19448                                <div class="bio-image-section">
19449                                    <img src="https://media.echovira.com/pulseborn/pulseborn_hunter_cole_male_singer_portrait_2.png" alt="Hunter Cole" class="bio-artist-image"
19450                srcset="https://media.echovira.com/pulseborn/pulseborn_hu
19450nter_cole_male_singer_portrait_2-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_hunter_cole_male_singer_portrait_2-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_hunter_cole_male_singer_portrait_2-full.webp 1024w"
19451                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
19452                                </div>
19453                                <div class="bio-text-section">
19454                                    <div class="bio-artist-title">
19455                                        <h1>Hunter Cole</h1>
19456                                        <div class="stage-name">"Hunter" • Age 27</div>
19457                                        <div class="role">Male Singer</div>
19458                                    </div>
19459                                    <div class="bio-description">
19460                                        <p>Meet Hunter — Pulseborn's soulful voice at 27. A soulful, deep singer with a heartfelt delivery that pulls the listener into every lyric. His warm timbre and dynamic phrasing shape Pulseborn's emotive core, giving the band's songs a more intimate pulse and lifting live energy into powerful releases.</p><p>Hunter brings warm depth, raw emotion and dynamic range to every track. His vocal tone and electric stage energy lift our songs from riffs to anthems, giving Pulseborn its emotional core.</p><p>As the vocalist he brings a wide range, nuanced phrasing, expressive dynamics and a stage presence grounded in soul and indie influences. Expect soaring choruses, intimate moments, and the kind of phrasing that sticks with you long after the last note.</p>
19461                                    </div>
19462                                </div>
19463                            </div>
19464                        </div>
19465                    </div>
19466                    
19467                    <footer class="main-footer">
19468                        <div class="container">
19469                            <div class="footer-content">
19470                                <div class="social-links">
19471                                    <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="social-link">📺</a>
19472                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank" class="social-link">📷</a>
19473                                    <a href="https://www.tiktok.com/@pulseborn" target="_blank" class="social-link">🎵</a>
19474                                    <a href="https://www.facebook.com/Pulsebornofficial" target="_blank" class="social-link">👥</a>
19475                                    <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="social-link">🎧</a>
19476                                </div>
19477                            </div>
19478                            <div class="footer-bottom">
19479                                <p>&copy; 2024-2025 Pulseborn. All rights reserved.</p>
19480                                <p class="footer-handle">
19481                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank">@pulsebornofficial</a>
19482                                </p>
19483                            </div>
19484                        </div>
19485                    </footer>
19486                </div>
19487<div id="bio-jackson-reed" class="page-container bio-page">
19488                    <div class="bio-header">
19489                        <div class="bio-header-content">
19490                            <div class="container">
19491                                <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
19492                            </div>
19493                        </div>
19494                    </div>
19495                    
19496                    <div class="bio-content">
19497                        <div class="container">
19498                            <div class="bio-card">
19499                                <div class="bio-image-section">
19500                                    <img src="https://media.echovira.com/pulseborn/pulseborn_jackson_reed_male_singer_portrait_0.png" alt="Jackson Reed" class="bio-artist-image"
19501                srcset="https://media.echovira.com/pulseborn/pulseborn_jackson_reed_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_jackson_reed_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_jackson_reed_male_singer_portrait_0-full.
19501webp 1024w"
19502                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
19503                                </div>
19504                                <div class="bio-text-section">
19505                                    <div class="bio-artist-title">
19506                                        <h1>Jackson Reed</h1>
19507                                        <div class="stage-name">"Jax" • Age 26</div>
19508                                        <div class="role">Male Singer</div>
19509                                    </div>
19510                                    <div class="bio-description">
19511                                        <p>Meet Jax — Jackson Reed, Pulseborn's 26-year-old lead singer. Raw, raspy, and impossible to ignore. A rebel frontman with a raspy, commanding voice and raw charisma, Jax drives Pulseborn's sound and live intensity.</p><p>He brings a gritty, soaring edge to the band's sound, turning every chorus into anthemic fire and every verse into storytelling heartbeat. His timbre sits gritty yet warm, with a wide range, dynamic phrasing, and a stage presence that pushes every song forward.</p><p>Influenced by classic punk grit and modern alt-rock phrasing, he balances melodic hooks with jagged delivery. His vocal tone cuts through heavy riffs while adding warmth on the quieter moments, giving Pulseborn that push-and-pull energy fans crave. On stage his vocal dynamics and phrasing shape arrangements, turning quiet verses into explosive choruses and anchoring the band's live energy.</p>
19512                                    </div>
19513                                </div>
19514                            </div>
19515                        </div>
19516                    </div>
19517                    
19518                    <footer class="main-footer">
19519                        <div class="container">
19520                            <div class="footer-content">
19521                                <div class="social-links">
19522                                    <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="social-link">📺</a>
19523                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank" class="social-link">📷</a>
19524                                    <a href="https://www.tiktok.com/@pulseborn" target="_blank" class="social-link">🎵</a>
19525                                    <a href="https://www.facebook.com/Pulsebornofficial" target="_blank" class="social-link">👥</a>
19526                                    <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="social-link">🎧</a>
19527                                </div>
19528                            </div>
19529                            <div class="footer-bottom">
19530                                <p>&copy; 2024-2025 Pulseborn. All rights reserved.</p>
19531                                <p class="footer-handle">
19532                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank">@pulsebornofficial</a>
19533                                </p>
19534                            </div>
19535                        </div>
19536                    </footer>
19537                </div>
19538<div id="bio-juliette-monroe" class="page-container bio-page">
19539                    <div class="bio-header">
19540                        <div class="bio-header-content">
19541                            <div class="container">
19542                                <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
19543                            </div>
19544                        </div>
19545                    </div>
19546                    
19547                    <div class="bio-content">
19548                        <div class="container">
19549                            <div class="bio-card">
19550                                <div class="bio-image-section">
19551                                    <img src="https://media.echovira.com/pulseborn/pulseborn_juliette_monroe_composerlyricist_portrait_1.png" alt="Juliette Monroe" class="bio-artist-image"
19552                srcset="https://media.echovira.com/pulseborn/pulseborn_juliette_monroe_composerlyricist_portrait_1-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_juliette_monroe_composerlyricist_portrait_1-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_juliette_monroe_composerlyricist_portrait_1-full.
19552webp 1024w"
19553                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
19554                                </div>
19555                                <div class="bio-text-section">
19556                                    <div class="bio-artist-title">
19557                                        <h1>Juliette Monroe</h1>
19558                                        <div class="stage-name">"Juliette" • Age 27</div>
19559                                        <div class="role">Composer/Lyricist</div>
19560                                    </div>
19561                                    <div class="bio-description">
19562                                        <p>Meet Juliette Monroe — 27; composer & lyricist of Pulseborn. A poetic architect for the band, a lyricist with a timeless touch. Juliette is the poetic architect of Pulseborn: a songwriter whose lyrics cut deep and whose arrangements build emotional worlds that lift every track.</p><p>Juliette shapes Pulseborn's songs from the ground up, writing melodies and words that become the band's identity. As composer she crafts memorable melodies, signature harmonic turns and motifs, arranging structures that give each song its emotional arc.</p><p>As a composer and lyricist she crafts melodies, harmonies, and narratives with a deft, deliberate process — sketching at the piano, layering textures in the studio, and refining words until they breathe. As lyricist she favors intimate storytelling, vivid imagery and a measured cadence that lets feeling sit cleanly inside each line. Her writing drives the band's identity, weaving intimate storytelling into the band's powerful, anthemic sound.</p>
19563                                    </div>
19564                                </div>
19565                            </div>
19566                        </div>
19567                    </div>
19568                    
19569                    <footer class="main-footer">
19570                        <div class="container">
19571                            <div class="footer-content">
19572                                <div class="social-links">
19573                                    <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="social-link">📺</a>
19574                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank" class="social-link">📷</a>
19575                                    <a href="https://www.tiktok.com/@pulseborn" target="_blank" class="social-link">🎵</a>
19576                                    <a href="https://www.facebook.com/Pulsebornofficial" target="_blank" class="social-link">👥</a>
19577                                    <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="social-link">🎧</a>
19578                                </div>
19579                            </div>
19580                            <div class="footer-bottom">
19581                                <p>&copy; 2024-2025 Pulseborn. All rights reserved.</p>
19582                                <p class="footer-handle">
19583                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank">@pulsebornofficial</a>
19584                                </p>
19585                            </div>
19586                        </div>
19587                    </footer>
19588                </div>
19589<div id="bio-lila-morgan" class="page-container bio-page">
19590                    <div class="bio-header">
19591                        <div class="bio-header-content">
19592                            <div class="container">
19593                                <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
19594                            </div>
19595                        </div>
19596                    </div>
19597                    
19598                    <div class="bio-content">
19599                        <div class="container">
19600                            <div class="bio-card">
19601                                <div class="bio-image-section">
19602                                    <img src="https://media.echovira.com/pulseborn/pulseborn_lila_morgan_female_singer_portrait_2.png" alt="Lila Morgan" class="bio-artist-image"
19603                srcset="https://media.echovira.com/pulseborn/pulseborn_lila_morgan_female_singer_portrait_2-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_lila_morgan_female_singer_portrait_2-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_lila_morgan_female_singer_portrait_2-full.webp 1024w"
19604                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
19605                                </div>
19606                                <div class="bio-text-section">
19607                                    <div class="bio-artist-title">
19608                                        <h1>Lila Morgan</h1>
19609                                        <div class="stage-name">"Lila Rose" • Age 25</div>
19610                                        <div class="role">Female Singer</div>
19611                                    </div>
19612                                    <div class="bio-description">
19613                                        <p>Welcome Lila Rose — Pulseborn's new voice. Lila Morgan, 25, joins as our female singer. Her artistry is defined by soulful elegance that brings sophistication and depth. Her voice brings soulful elegance, adding sophistication and depth to every melody, with a warm timbre and an emotive, dynamic range that commands attention.</p><p>As our vocalist she offers a warm timbre with a clear upper register, an expansive range, precise phrasing and dynamic control; her commanding stage presence and influences from soul, jazz, and alternative music shape expressive deliveries.</p><p>On stage and in the studio she pours energy and nuance into every phrase, turning lyrics into moments that linger long after the song ends. Lila Rose's phrasing and emotional nuance reshape Pulseborn's sound—lifting arrangements, sharpening harmonie
19613s, and fueling our live energy with moments of quiet intimacy and full-band surges.</p>
19614                                    </div>
19615                                </div>
19616                            </div>
19617                        </div>
19618                    </div>
19619                    
19620                    <footer class="main-footer">
19621                        <div class="container">
19622                            <div class="footer-content">
19623                                <div class="social-links">
19624                                    <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="social-link">📺</a>
19625                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank" class="social-link">📷</a>
19626                                    <a href="https://www.tiktok.com/@pulseborn" target="_blank" class="social-link">🎵</a>
19627                                    <a href="https://www.facebook.com/Pulsebornofficial" target="_blank" class="social-link">👥</a>
19628                                    <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="social-link">🎧</a>
19629                                </div>
19630                            </div>
19631                            <div class="footer-bottom">
19632                                <p>&copy; 2024-2025 Pulseborn. All rights reserved.</p>
19633                                <p class="footer-handle">
19634                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank">@pulsebornofficial</a>
19635                                </p>
19636                            </div>
19637                        </div>
19638                    </footer>
19639                </div>
19640<div id="bio-logan-price" class="page-container bio-page">
19641                    <div class="bio-header">
19642                        <div class="bio-header-content">
19643                            <div class="container">
19644                                <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
19645                            </div>
19646                        </div>
19647                    </div>
19648                    
19649                    <div class="bio-content">
19650                        <div class="container">
19651                            <div class="bio-card">
19652                                <div class="bio-image-section">
19653                                    <img src="https://media.echovira.com/pulseborn/pulseborn_logan_price_male_singer_portrait_0.png" alt="Logan Price" class="bio-artist-image"
19654                srcset="https://media.echovira.com/pulseborn/pulseborn_logan_price_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_logan_price_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_logan_price_male_singer_portrait_0-full.webp 1024w"
19655                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
19656                                </div>
19657                                <div class="bio-text-section">
19658                                    <div class="bio-artist-title">
19659                                        <h1>Logan Price</h1>
19660                                        <div class="stage-name">"Logan" • Age 25</div>
19661                                        <div class="role">Male Singer</div>
19662                                    </div>
19663                                    <div class="bio-description">
19664                                        <p>Meet Logan Price — stage name Logan, 25, Pulseborn's versatile, smooth vocalist who blends edgy grit with romantic phrasing. His voice adds depth and contrast to Pulseborn's sound, lifting rough riffs with silky runs and raw high-energy moments.</p><p>His warm baritone timbre and wide range combine with precise phrasing, keen dynamic control, and an intimate but commanding stage presence shaped by indie and soul influences. From intimate falsetto to gritty belt, Logan's range and emotive delivery shape our songs and live intensity.</p><p>As Pulseborn's lead voice, Logan anchors melodies and pushes arrangements from restrained verses into explosive, cathartic choruses, reshaping the band's sonic identity and live energy. On stage he moves a crowd with subtle dynamics, confident runs, and emotive phrasing—every show becomes a clear narrative.</p>
19665                                    </div>
19666                                </div>
19667                            </div>
19668                        </div>
19669                    </div>
19670                    
19671                    <footer class="main-footer">
19672                        <div class="container">
19673                            <div class="footer-content">
19674                                <div class="social-links">
19675                                    <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="social-link">📺</a>
19676                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank" class="social-link">📷</a>
19677                                    <a href="https://www.tiktok.com/@pulseborn" target="_blank" class="social-link">🎵</a>
19678                                    <a href="https://www.facebook.com/Pulsebornofficial" target="_blank" class="social-link">👥</a>
19679                                    <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="social-link">🎧</a>
19680                                </div>
19681                            </div>
19682                            <div class="footer-bottom">
19683                                <p>&copy; 2024-2025 Pulseborn. All rights reserved.</p>
19684                                <p class="footer-handle">
19685                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank">@pulsebornofficial</a>
19686                                </p>
19687                            </div>
19688                        </div>
19689                    </footer>
19690                </div>
19691<div id="bio-madison-lane" class="page-container bio-page">
19692                    <div class="bio-header">
19693                        <div class="bio-header-content">
19694                            <div class="container">
19695                                <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
19696                            </div>
19697                        </div>
19698                    </div>
19699                    
19700                    <div class="bio-content">
19701                        <div class="container">
19702                            <div class="bio-card">
19703                                <div class="bio-image-section">
19704                                    <img src="https://media.echovira.com/pulseborn/pulseborn_madison_lane_female_singer_portrait_2.png" alt="Madison Lane" class="bio-artist-image"
19705                srcset="https://media.echovira.com/pulseborn/pulseborn_madison_lane_female_singer_portrait_2-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_madison_lane_female_singer_portrait_2-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_madison_lane_female_singer_portrait_2-full.webp 1024w"
19706                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
19707                                </div>
19708                                <div class="bio-text-section">
19709                                    <div class="bio-artist-title">
19710                                        <h1>Madison Lane</h1>
19711                                        <div class="stage-name">"Madi" • Age 25</div>
19712                                        <div class="role">Female Singer</div>
19713                                    </div>
19714                                    <div class="bio-description">
19715                                        <p>Meet Madison Lane — stage name Madi, 25: Pulseborn's lead singer. A commanding vocalist whose soaring high notes and magnetic stage presence shape the band. Her voice cuts through our sound with crystalline highs and raw, emotional grit that lifts every chorus and turns quiet moments into anthems.</p><p>Her timbre blends warmth with a bright upper register, she has a flexible range that reaches clear highs, and her phrasing and dynamic control show influences from soul and modern rock. On record and live she anchors arrangements with bold melodic lines, driving the band's energy through confident delivery and kinetic stagecraft.</p><p>As the band's lead singer, Madi's vocal dynamics and magnetic stage presence shape the Pulseborn identity — bold, cinematic, and impossible to ignore. Her powerhouse diva energy brings soaring vocals, commanding stage aura, and fearless energy to every performance.</p>
19716                                    </div>
19717                                </div>
19718                            </div>
19719                        </div>
19720                    </div>
19721                    
19722                    <footer class="main-footer">
19723                        <div class="container">
19724                            <div class="footer-content">
19725                                <div class="social-links">
19726                                    <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="social-link">📺</a>
19727                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank" class="social-link">📷</a>
19728                                    <a href="https://www.tiktok.com/@pulseborn" target="_blank" class="social-link">🎵</a>
19729                                    <a href="https://www.facebook.com/Pulsebornofficial" target="_blank" class="social-link">👥</a>
19730                                    <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="social-link">🎧</a>
19731                                </div>
19732                            </div>
19733                            <div class="footer-bottom">
19734                                <p>&copy; 2024-2025 Pulseborn. All rights reserved.</p>
19735                                <p class="footer-handle">
19736                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank">@pulsebornofficial</a>
19737                                </p>
19738                            </div>
19739                        </div>
19740                    </footer>
19741                </div>
19742<div id="bio-paige-carter" class="page-container bio-page">
19743                    <div class="bio-header">
19744                        <div class="bio-header-content">
19745                            <div class="container">
19746                                <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
19747                            </div>
19748                        </div>
19749                    </div>
19750                    
19751                    <div class="bio-content">
19752                        <div class="container">
19753                            <div class="bio-card">
19754                                <div class="bio-image-section">
19755                                    <img src="https://media.echovira.com/pulseborn/pulseborn_paige_carter_female_singer_portrait_0.png" alt="Paige Carter" class="bio-artist-image"
19756                srcset="https://media.echovira.com/pulseborn/pulseborn_paige_carter_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_paige_carter_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_paige_carter_female_singer_portrait_0-full.
19756webp 1024w"
19757                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
19758                                </div>
19759                                <div class="bio-text-section">
19760                                    <div class="bio-artist-title">
19761                                        <h1>Paige Carter</h1>
19762                                        <div class="stage-name">"Paige" • Age 23</div>
19763                                        <div class="role">Female Singer</div>
19764                                    </div>
19765                                    <div class="bio-description">
19766                                        <p>Meet Paige — Paige Carter, 23, the new female singer of Pulseborn. Her artistry blends bright, uplifting energy with a quirky, playful charm. Her voice is luminous and expressive — a warm, clear tone with bright, uplifting energy and a quirky charm that turns melodies into moments.</p><p>As Pulseborn's lead vocalist, Paige's clear mezzo timbre, wide range, expressive phrasing, dynamic control, and engaging stage presence bring a warm, intimate center influenced by indie pop and soul.</p><p>On record and live, Paige's vocal colors add melodic sparkle and emotional depth to Pulseborn's dynamic sound, shaping everything we do. Her melodic instincts and phrasing reshape arrangements, lifting choruses and giving the band's live shows a buoyant, slightly unpredictable spark.</p>
19767                                    </div>
19768                                </div>
19769                            </div>
19770                        </div>
19771                    </div>
19772                    
19773                    <footer class="main-footer">
19774                        <div class="container">
19775                            <div class="footer-content">
19776                                <div class="social-links">
19777                                    <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="social-link">📺</a>
19778                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank" class="social-link">📷</a>
19779                                    <a href="https://www.tiktok.com/@pulseborn" target="_blank" class="social-link">🎵</a>
19780                                    <a href="https://www.facebook.com/Pulsebornofficial" target="_blank" class="social-link">👥</a>
19781                                    <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="social-link">🎧</a>
19782                                </div>
19783                            </div>
19784                            <div class="footer-bottom">
19785                                <p>&copy; 2024-2025 Pulseborn. All rights reserved.</p>
19786                                <p class="footer-handle">
19787                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank">@pulsebornofficial</a>
19788                                </p>
19789                            </div>
19790                        </div>
19791                    </footer>
19792                </div>
19793<div id="bio-ryder-james" class="page-container bio-page">
19794                    <div class="bio-header">
19795                        <div class="bio-header-content">
19796                            <div class="container">
19797                                <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
19798                            </div>
19799                        </div>
19800                    </div>
19801                    
19802                    <div class="bio-content">
19803                        <div class="container">
19804                            <div class="bio-card">
19805                                <div class="bio-image-section">
19806                                    <img src="https://media.echovira.com/pulseborn/pulseborn_ryder_james_male_singer_portrait_0.png" alt="Ryder James" class="bio-artist-image"
19807                srcset="https://media.echovira.com/pulseborn/pulseborn_ryder_james_male_singer_portrait_0-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_ryder_james_male_singer_portrait_0-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_ryder_james_male_singer_portrait_0-full.
19807webp 1024w"
19808                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
19809                                </div>
19810                                <div class="bio-text-section">
19811                                    <div class="bio-artist-title">
19812                                        <h1>Ryder James</h1>
19813                                        <div class="stage-name">"Ryder" • Age 24</div>
19814                                        <div class="role">Male Singer</div>
19815                                    </div>
19816                                    <div class="bio-description">
19817                                        <p>Meet Ryder James — Ryder, 24, the charismatic male singer of Pulseborn, bringing electrifying vocals and stage energy. A charismatic frontman who commands the room with high-energy delivery and instantly memorable hooks. His voice is warm yet razor-clear, with a dynamic range and raw emotionality that grabs you from the first note.</p><p>As Pulseborn's lead singer, Ryder's warm, slightly raspy timbre, wide range, and precise phrasing shape dynamic builds and nod to rock and soul influences. Charismatic crowd-pleaser with an energetic stage presence, he turns every show into a sing-along moment and feeds off the crowd's energy.</p><p>His vocal choices and onstage intensity are central to the band's sound, turning arrangements into powerful, crowd-driven moments. Ryder's vocal tone and intensity are core to Pulseborn's anthemic sound, lifting melodies and driving the band's signature pulse.</p>
19818                                    </div>
19819                                </div>
19820                            </div>
19821                        </div>
19822                    </div>
19823                    
19824                    <footer class="main-footer">
19825                        <div class="container">
19826                            <div class="footer-content">
19827                                <div class="social-links">
19828                                    <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="social-link">📺</a>
19829                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank" class="social-link">📷</a>
19830                                    <a href="https://www.tiktok.com/@pulseborn" target="_blank" class="social-link">🎵</a>
19831                                    <a href="https://www.facebook.com/Pulsebornofficial" target="_blank" class="social-link">👥</a>
19832                                    <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="social-link">🎧</a>
19833                                </div>
19834                            </div>
19835                            <div class="footer-bottom">
19836                                <p>&copy; 2024-2025 Pulseborn. All rights reserved.</p>
19837                                <p class="footer-handle">
19838                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank">@pulsebornofficial</a>
19839                                </p>
19840                            </div>
19841                        </div>
19842                    </footer>
19843                </div>
19844<div id="bio-sierra-monroe" class="page-container bio-page">
19845                    <div class="bio-header">
19846                        <div class="bio-header-content">
19847                            <div class="container">
19848                                <a href="#artists" data-action="back" class="back-button">← Back to Artists</a>
19849                            </div>
19850                        </div>
19851                    </div>
19852                    
19853                    <div class="bio-content">
19854                        <div class="container">
19855                            <div class="bio-card">
19856                                <div class="bio-image-section">
19857                                    <img src="https://media.echovira.com/pulseborn/pulseborn_sierra_monroe_female_singer_portrait_1.png" alt="Sierra Monroe" class="bio-artist-image"
19858                srcset="https://media.echovira.com/pulseborn/pulseborn_sierra_monroe_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/pulseborn/pulseborn_sierra_monroe_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/pulseborn/pulseborn_sierra_monroe_female_singer_portrait_1-full.
19858webp 1024w"
19859                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
19860                                </div>
19861                                <div class="bio-text-section">
19862                                    <div class="bio-artist-title">
19863                                        <h1>Sierra Monroe</h1>
19864                                        <div class="stage-name">"Sierra" • Age 26</div>
19865                                        <div class="role">Female Singer</div>
19866                                    </div>
19867                                    <div class="bio-description">
19868                                        <p>Meet Sierra Monroe — Sierra: Pulseborn's lead singer. A fierce starlet with dramatic stage presence who commands every room. Her rich, expressive tone and cinematic phrasing cut through every arrangement — a fierce starlet with dramatic stage presence who owns every chorus.</p><p>Sierra, 26, brings a rich, smoky timbre and a wide range that moves from intimate phrasing to full-throttle dynamics. Her phrasing is theatrical but precise, drawing on soul, rock and cinematic pop influences. On record and stage she balances vulnerability with bold power.</p><p>Her vocal control, dynamic runs and raw emotion shape Pulseborn's melodies and give our songs their unforgettable center. Her voice reshapes Pulseborn's arrangements, pushing choruses into bigger horizons and carving shadowed, tense verses that lift the band's live energy into something kinetic.</p>
19869                                    </div>
19870                                </div>
19871                            </div>
19872                        </div>
19873                    </div>
19874                    
19875                    <footer class="main-footer">
19876                        <div class="container">
19877                            <div class="footer-content">
19878                                <div class="social-links">
19879                                    <a href="https://www.youtube.com/@Pulseborn" target="_blank" class="social-link">📺</a>
19880                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank" class="social-link">📷</a>
19881                                    <a href="https://www.tiktok.com/@pulseborn" target="_blank" class="social-link">🎵</a>
19882                                    <a href="https://www.facebook.com/Pulsebornofficial" target="_blank" class="social-link">👥</a>
19883                                    <a href="https://open.spotify.com/artist/7l4ut7f4cgh7wcReYe7na6" target="_blank" class="social-link">🎧</a>
19884                                </div>
19885                            </div>
19886                            <div class="footer-bottom">
19887                                <p>&copy; 2024-2025 Pulseborn. All rights reserved.</p>
19888                                <p class="footer-handle">
19889                                    <a href="https://www.instagram.com/pulsebornofficial/" target="_blank">@pulsebornofficial</a>
19890                                </p>
19891                            </div>
19892                        </div>
19893                    </footer>
19894                </div>
19895</div>
19896
19897    
19898<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
19899  <nav aria-label="Site pages">
19900    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
19901    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
19902    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
19903    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
19904  </nav>
19905  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
19906</footer>
19907`;e.s(["PulsebornEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=(0,t.injectFluidCanvas)(a,"#008070","#0d1117",.28);function s(e){let a=document.getElementById("mainPage"),i=document.getElementById("bio-"+e);a&&i&&(a.classList.remove("active"),document.querySelectorAll(".bio-page").forEach(e
19907=>e.classList.remove("active")),i.classList.add("active"),window.scrollTo(0,0))}function r(){document.querySelectorAll(".page-container").forEach(e=>e.classList.remove("active")),document.getElementById("mainPage")?.classList.add("active"),window.scrollTo(0,0)}function n(e){let a=e.target,i=a.closest("[data-artist-id]");if(i){e.preventDefault(),s(i.dataset.artistId);return}if(a.closest('[data-action="back"]')){e.preventDefault(),r();return}}window.showArtistBio=s,window.showMainPage=r,window.hideBioPage=r;let o=document.getElementById("mobileToggle"),l=document.getElementById("navMenu");o&&l&&o.addEventListener("click",()=>l.classList.toggle("active"));let c=()=>document.getElementById("mainNav")?.classList.toggle("scrolled",window.scrollY>100);return a.addEventListener("click",n),window.addEventListener("scroll",c),()=>{i(),a.removeEventListener("click",n),window.removeEventListener("scroll",c),delete window.showArtistBio,delete window.showMainPage,delete window.hideBioPage}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,className:"echovira-page-root",dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(n)},suppressHydrationWarning:!0}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},840011,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(210799),s=e.i(601048),r=e.i(920206);let n=`
19908    <link rel="preconnect" href="https://fonts.googleapis.com">
19909    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
19910    <link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;700;900&family=Poppins:wght@400;700&display=swap" rel="stylesheet">
19911    <style>
19912        .entry-title, .post-edit-link, .site-footer, .site-info, .site-header, .site-branding, header.header, .masthead, .page-title {
19913            display: none !important;
19914        }
19915
19916        .vc_row[data-vc-full-width], .wpb_column, .vc_column_container, .wpb_wrapper, .entry-content, .site-content-contain, #content, .site-content, .site, #page, main {
19917            width: 100% !important;
19918            max-width: 100% !important;
19919            padding: 0 !important;
19920            margin: 0 !important;
19921            margin-top: 0 !important;
19922            padding-top: 0 !important;
19923        }
19924
19925        :root {
19926            --ev-bg: #fafafa;
19927            --ev-fg: #2c2c2c;
19928            --primary-color: #1a1a1a;
19929            --syahi-orange: #FF9933;
19930            --syahi-white: #ffffff;
19931            --syahi-green: #138808;
19932            --white: #ffffff;
19933            --light-gray: #f5f5f5;
19934            --text-light: #ffffff;
19935            --text-dark: #2c2c2c;
19936            --background-dark: #0a0a0a;
19937            --background-light: #fafafa;
19938            --gradient-main: linear-gradient(135deg, #FF9933 0%, #138808 100%);
19939            --shadow-light: 0 2px 20px rgba(0,0,0,0.1);
19940            --shadow-heavy: 0 10px 40px rgba(0,0,0,0.2);
19941            --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
19942        }
19943
19944        * {
19945            margin: 0;
19946            padding: 0;
19947            box-sizing: border-box;
19948        }
19949
19950        body {
19951            font-family: 'Raleway', -apple-system, sans-serif;
19952            line-height: 1.8;
19953            color: var(--ev-fg);
19954            background: var(--ev-bg);
19955            overflow-x: hidden;
19956        }
19957
19958        body:not(.lang-hi) .lang-hi { display: none !important; }
19959        body:not(.lang-en) .lang-en { display: none !important; }
19960
19961        .lang-toggle {
19962            position: absolute;
19963            top: 20px;
19964            right: 20px;
19965            z-index: 1001;
19966            background: rgba(255,255,255,0.2);
19967            border-radius: 25px;
19968            padding: 8px;
19969            backdrop-filter: blur(10px);
19970        }
19971
19972        .lang-toggle button {
19973            background: transparent;
19974            border: none;
19975            padding: 8px 16px;
19976            cursor: pointer;
19977            font-weight: 700;
19978            border-radius: 20px;
19979            transition: var(--transition);
19980            font-size: 0.9rem;
19981            color: white;
19982        }
19983
19984        .lang-toggle button.active {
19985            background: var(--syahi-green);
19986            color: white;
19987        }
19988
19989        .main-nav {
19990            position: fixed;
19991            top: 0;
19992            left: 0;
19993            right: 0;
19994            background: rgba(10, 10, 10, 0.95);
19995            backdrop-filter: blur(20px);
19996            z-index: 1000;
19997            padding: 1rem 0;
19998            border-bottom: 1px solid rgba(255, 153, 51, 0.3);
19999        }
20000
20001        .nav-container {
20002            max-width: 1200px;
20003            margin: 0 auto;
20004            padding: 0 20px;
20005            padding-right: 210px;
20006            display: flex;
20007            justify-content: space-between;
20008            align-items: center;
20009        }
20010
20011        .logo img { height: 50px; }
20012
20013        .nav-menu {
20014            display: flex;
20015            list-style: none;
20016            gap: 2rem;
20017        }
20018
20019        .nav-menu a {
20020            color: var(--text-light);
20021            text-decoration: none;
20022            font-weight: 700;
20023            transition: var(--transition);
20024        }
20025
20026        .nav-menu a:hover { color: var(--syahi-orange); }
20027
20028        .mobile-menu-toggle {
20029            display: none;
20030            background: none;
20031            border: none;
20032            color: var(--text-light);
20033            font-size: 1.5rem;
20034            cursor: pointer;
20035        }
20036
20037        .hero-section {
20038            min-height: 100vh;
20039            /* Worst-case gradient stop (#FF9933) blended with the 55% black
20040               ::after scrim below — the real effective background white
20041               hero text renders against. Testing convention: the ADA
20042               crawler can't see gradients (only background-color), so it
20043               falls through to a white default and reports white-on-white
20044               unless a solid stand-in is declared here. */
20045            --ada-contrast-bg: #734517;
20046            background: var(--gradient-main);
20047            display: flex;
20048            align-items: center;
20049            justify-content: center;
20050            text-align: center;
20051            color: var(--text-light);
20052            position: relative;
20053            overflow: hidden;
20054        }
20055
20056        .hero-section::before {
20057            content: '';
20058            position: absolute;
20059            top: 0;
20060            left: 0;
20061            right: 0;
20062            bottom: 0;
20063            background: radial-gradient(circle at 50% 0%, rgba(255,255,255,0.1) 0%, transparent 50%);
20064        }
20065
20066        .hero-section::after {
20067            /* White hero text on the gradient's lighter (orange) stop is
20068               only 2.14:1 — fails even the large-text 3:1 threshold. A 35%
20069               scrim (measured live: 4.16:1) still fell short for the
20070               smaller, non-bold Hindi subtitle variant needing the full
20071               4.5:1 — 55% clears it (~8.1:1) without flattening the brand
20072               gradient into a solid color. */
20073            content: '';
20074            position: absolute;
20075            inset: 0;
20076            background: rgba(0, 0, 0, 0.55);
20077            z-index: 1;
20078        }
20079
20080        .hero-content {
20081            position: relative;
20082            z-index: 2;
20083            max-width: 900px;
20084            padding: 0 20px;
20085        }
20086
20087        .hero-title {
20088            font-family: 'Poppins', serif;
20089            font-size: clamp(3rem, 8vw, 6rem);
20090            margin-bottom: 1rem;
20091            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
20092            font-weight: 700;
20093            letter-spacing: 4px;
20094        }
20095
20096        .hero-subtitle {
20097            font-size: clamp(1rem, 2vw, 1.3rem);
20098            margin-bottom: 2rem;
20099            opacity: 0.9;
20100            line-height: 1.6;
20101        }
20102
20103        .cta-button {
20104            display: inline-block;
20105            padding: 18px 40px;
20106            background: white;
20107            /* --syahi-orange (#FF9933) as text on white is 2.14:1, below
20108               AA's 4.5:1 — darkened for legibility */
20109            color: #a83e14;
20110            text-decoration: none;
20111            border-radius: 50px;
20112            font-weight: 700;
20113            font-size: 1.1rem;
20114            transition: var(--transition);
20115            box-shadow: var(--shadow-light);
20116        }
20117
20118        .cta-button:hover {
20119            transform: translateY(-3px);
20120            box-shadow: var(--shadow-heavy);
20121            background: var(--syahi-green);
20122            color: white;
20123        }
20124
20125        .section {
20126            padding: 80px 0;
20127        }
20128
20129        .section-dark {
20130            background: var(--background-dark);
20131            color: var(--text-light);
20132        }
20133
20134        .container {
20135            max-width: 1200px;
20136            margin: 0 auto;
20137            padding: 0 20px;
20138        }
20139
20140        .section-title {
20141            text-align: center;
20142            font-size: 2.5rem;
20143            margin-bottom: 3rem;
20144            position: relative;
20145            font-family: 'Poppins', serif;
20146            font-weight: 700;
20147            letter-spacing: 2px;
20148        }
20149
20150        .section-title::after {
20151            content: '';
20152            position: absolute;
20153            bottom: -10px;
20154            left: 50%;
20155            transform: translateX(-50%);
20156            width: 80px;
20157            height: 3px;
20158            background: var(--syahi-orange);
20159            border-radius: 2px;
20160        }
20161
20162        .about-content {
20163            max-width: 900px;
20164            margin: 0 auto;
20165            text-align: center;
20166            line-height: 2;
20167            font-size: 1.1rem;
20168        }
20169
20170        .about-content p {
20171            margin-bottom: 1.5rem;
20172        }
20173
20174        .artists-gallery {
20175            display: grid;
20176            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
20177            gap: 2.5rem;
20178            margin-top: 3rem;
20179        }
20180
20181        .artist-card {
20182            position: relative;
20183            cursor: pointer;
20184            transition: var(--transition);
20185            background: white;
20186            border-radius: 20px;
20187            overflow: hidden;
20188            box-shadow: var(--shadow-light);
20189            border: 2px solid transparent;
20190        }
20191
20192        .artist-card:hover {
20193            transform: translateY(-10px) scale(1.02);
20194            box-shadow: var(--shadow-heavy);
20195            border-color: var(--syahi-green);
20196        }
20197
20198        .artist-image-wrapper {
20199            position: relative;
20200            width: 100%;
20201            aspect-ratio: 1;
20202            overflow: hidden;
20203        }
20204
20205        .artist-image {
20206            width: 100%;
20207            height: 100%;
20208            object-fit: cover;
20209            transition: transform 0.5s ease;
20210        }
20211
20212        .artist-card:hover .artist-image {
20213            transform: scale(1.1);
20214        }
20215
20216        .artist-overlay {
20217            position: absolute;
20218            bottom: 0;
20219            left: 0;
20220            right: 0;
20221            background: linear-gradient(to top, rgba(0,0,0,0.9), transparent);
20222            padding: 2rem 1.5rem 1.5rem;
20223            color: white;
20224        }
20225
20226        .artist-stage-name {
20227            font-size: 1.5rem;
20228            font-weight: 900;
20229            margin-bottom: 0.3rem;
20230        }
20231
20232        .artist-role-badge {
20233            display: inline-block;
20234            background: var(--syahi-orange);
20235            /* Inherited white from .artist-overlay is ~2.1:1 on this bright
20236               orange (#FF9933) badge bg, below AA's 4.5:1 — dark text clears it. */
20237            color: #000;
20238            padding: 4px 12px;
20239            border-radius: 15px;
20240            font-size: 0.75rem;
20241            font-weight: 700;
20242            text-transform: uppercase;
20243            letter-spacing: 0.5px;
20244        }
20245
20246        .artist-real-name {
20247            font-size: 0.9rem;
20248            opacity: 0.8;
20249            margin-top: 0.5rem;
20250        }
20251
20252        .releases-grid, .videos-grid, .news-grid {
20253            display: grid;
20254            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
20255            gap: 2rem;
20256            margin-top: 3rem;
20257        }
20258
20259        .release-card, .video-card, .news-card {
20260            background: white;
20261            border-radius: 20px;
20262            overflow: hidden;
20263            box-shadow: var(--shadow-light);
20264            transition: var(--transition);
20265            border: 2px solid transparent;
20266        }
20267
20268        .section-dark .release-card,
20269        .section-dark .video-card,
20270        .section-dark .news-card {
20271            background: rgba(255,255,255,0.05);
20272            border-color: rgba(255,255,255,0.1);
20273        }
20274
20275        .release-card:hover, .video-card:hover, .news-card:hover {
20276            transform: translateY(-10px);
20277            box-shadow: var(--shadow-heavy);
20278            border-color: var(--syahi-green);
20279        }
20280
20281        .release-image, .video-embed, .news-image {
20282            position: relative;
20283            overflow: hidden;
20284            background: var(--gradient-main);
20285            display: flex;
20286            align-items: center;
20287            justify-content: center;
20288            color: white;
20289            font-size: 4rem;
20290        }
20291
20292        .release-image { 
20293            aspect-ratio: 1;
20294            position: relative;
20295        }
20296        
20297        .release-image img,
20298        .news-image img {
20299            width: 100%;
20300            height: 100%;
20301            object-fit: cover;
20302        }
20303
20304        .video-embed { 
20305            padding-bottom: 56.25%; 
20306            height: 0;
20307            position: relative;
20308        }
20309
20310        .video-embed iframe {
20311            position: absolute;
20312            top: 0;
20313            left: 0;
20314            width: 100%;
20315            height: 100%;
20316        }
20317
20318        .news-image { height: 200px; }
20319
20320        .release-info, .video-info, .news-content {
20321            padding: 1.5rem;
20322        }
20323
20324        .section-dark .release-info,
20325        .section-dark .video-info,
20326        .section-dark .news-content {
20327            color: var(--text-light);
20328        }
20329
20330        .release-title, .video-title, .news-title {
20331            font-size: 1.3rem;
20332            margin-bottom: 0.5rem;
20333            font-weight: 700;
20334            color: var(--text-dark);
20335        }
20336
20337        .section-dark .release-title,
20338        .section-dark .video-title,
20339        .section-dark .news-title {
20340            color: var(--text-light);
20341        }
20342
20343        .release-description, .news-excerpt {
20344            font-size: 0.95rem;
20345            color: #666;
20346            margin-bottom: 1rem;
20347            line-height: 1.6;
20348        }
20349
20350        .section-dark .release-description,
20351        .section-dark .news-excerpt {
20352            color: rgba(255,255,255,0.8);
20353        }
20354
20355        .streaming-links {
20356            display: flex;
20357            gap: 0.5rem;
20358            flex-wrap: wrap;
20359        }
20360
20361        .streaming-link {
20362            padding: 8px 15px;
20363            background: var(--syahi-orange);
20364            /* white on --syahi-orange (#FF9933) is 2.14:1, below AA's 4.5:1 */
20365            color: #000;
20366            text-decoration: none;
20367            border-radius: 20px;
20368            font-size: 0.8rem;
20369            font-weight: 700;
20370            transition: var(--transition);
20371            display: inline-block;
20372        }
20373
20374        .streaming-link:hover {
20375            background: var(--syahi-green);
20376            transform: translateY(-2px);
20377        }
20378
20379        .video-link, .read-more {
20380            display: inline-block;
20381            margin-top: 1rem;
20382            /* --syahi-orange (#FF9933) as text on white cards is 2.14:1,
20383               below AA's 4.5:1 — darkened for legibility */
20384            color: #a83e14;
20385            text-decoration: none;
20386            font-weight: 700;
20387            transition: var(--transition);
20388        }
20389
20390        .section-dark .video-link,
20391        .section-dark .read-more {
20392            /* --syahi-green (#138808) on this ~5%-white-tinted dark card
20393               (#0a0a0a base) is 4.11:1, below AA's 4.5:1 — lightened for
20394               this specific dark-on-dark context (kept scoped here rather
20395               than changing --syahi-green itself, which is also used
20396               elsewhere as a border/hover color where the darker value is
20397               fine). */
20398            color: #369a2d;
20399        }
20400
20401        .video-link:hover, .read-more:hover {
20402            /* --syahi-green (#138808) on the white card these sit on is
20403               4.33:1, below AA's 4.5:1 — darkened for this white-bg hover
20404               context (the .section-dark override above needs the
20405               opposite treatment, a lighter green, so this is scoped
20406               separat
20406ely rather than changing --syahi-green itself). */
20407            color: #0f6d06;
20408        }
20409
20410        .view-all-btn {
20411            text-align: center;
20412            margin-top: 3rem;
20413        }
20414
20415        .view-all-btn a {
20416            display: inline-block;
20417            padding: 15px 35px;
20418            background: var(--syahi-orange);
20419            /* white on --syahi-orange (#FF9933) is 2.14:1, below AA's 4.5:1 */
20420            color: #000;
20421            text-decoration: none;
20422            border-radius: 30px;
20423            font-weight: 700;
20424            transition: var(--transition);
20425        }
20426
20427        .view-all-btn a:hover {
20428            background: var(--syahi-green);
20429            transform: translateY(-3px);
20430        }
20431
20432        .loading-message {
20433            grid-column: 1 / -1;
20434            text-align: center;
20435            padding: 3rem;
20436            font-size: 1.2rem;
20437            color: #999;
20438        }
20439
20440        .bio-page {
20441            display: none;
20442            min-height: 100vh;
20443            padding-top: 80px;
20444            background: var(--background-light);
20445        }
20446
20447        .bio-page.active {
20448            display: block;
20449        }
20450
20451        .bio-header {
20452            background: var(--gradient-main);
20453            padding: 3rem 0;
20454            color: white;
20455            text-align: center;
20456        }
20457
20458        .back-button {
20459            display: inline-block;
20460            padding: 10px 25px;
20461            background: rgba(255,255,255,0.2);
20462            color: white;
20463            text-decoration: none;
20464            border-radius: 25px;
20465            margin-bottom: 1rem;
20466            transition: var(--transition);
20467            font-weight: 700;
20468        }
20469
20470        .back-button:hover {
20471            background: rgba(255,255,255,0.3);
20472            transform: translateY(-2px);
20473        }
20474
20475        .bio-content {
20476            max-width: 1000px;
20477            margin: -50px auto 0;
20478            position: relative;
20479            z-index: 10;
20480            padding: 0 20px 60px;
20481        }
20482
20483        .bio-card {
20484            background: white;
20485            border-radius: 20px;
20486            overflow: hidden;
20487            box-shadow: var(--shadow-heavy);
20488        }
20489
20490        .bio-image-section {
20491            padding: 3rem;
20492            text-align: center;
20493            background: linear-gradient(135deg, #fff5e6 0%, #e6ffe6 100%);
20494        }
20495
20496        .bio-artist-image {
20497            width: 280px;
20498            height: 280px;
20499            border-radius: 50%;
20500            object-fit: cover;
20501            border: 6px solid white;
20502            box-shadow: var(--shadow-light);
20503        }
20504
20505        .bio-text-section {
20506            padding: 3rem;
20507        }
20508
20509        .bio-artist-title {
20510            text-align: center;
20511            margin-bottom: 2.5rem;
20512            padding-bottom: 2rem;
20513            border-bottom: 2px solid #f0f0f0;
20514        }
20515
20516        .bio-artist-title h1 {
20517            font-size: 2.8rem;
20518            margin-bottom: 0.8rem;
20519            font-family: 'Poppins', serif;
20520            color: var(--text-dark);
20521            font-weight: 700;
20522            letter-spacing: 2px;
20523        }
20524
20525        .bio-artist-title .stage-name {
20526            font-size: 1.4rem;
20527            /* --syahi-orange (#FF9933) as text on this white bio card is
20528               2.14:1, below AA's 4.5:1 — darkened for legibility */
20529            color: #a83e14;
20530            font-weight: 700;
20531            margin-bottom: 1rem;
20532        }
20533
20534        .bio-artist-title .role {
20535            display: inline-block;
20536            background: var(--syahi-green);
20537            /* white on --syahi-green (#138808) is 4.33:1, just under AA's
20538               4.5:1 at this text size — black clears it with margin */
20539            color: #000;
20540            padding: 10px 25px;
20541            border-radius: 25px;
20542            font-size: 1rem;
20543            font-weight: 700;
20544        }
20545
20546        .bio-description {
20547            line-height: 2;
20548            font-size: 1.1rem;
20549            color: var(--text-dark);
20550        }
20551
20552        .bio-description p {
20553            margin-bottom: 1.5rem;
20554            text-align: justify;
20555        }
20556
20557        .main-footer {
20558            background: var(--primary-color);
20559            color: var(--text-light);
20560            padding: 3rem 0 1rem;
20561            text-align: center;
20562        }
20563
20564        .social-links {
20565            display: flex;
20566            justify-content: center;
20567            gap: 1rem;
20568            margin-bottom: 2rem;
20569        }
20570
20571        .social-link {
20572            width: 50px;
20573            height: 50px;
20574            border-radius: 50%;
20575            background: var(--syahi-orange);
20576            /* This badge is opaque, so contrast is against its OWN bg —
20577               white on --syahi-orange (#FF9933) is 2.14:1, below AA's 4.5:1 */
20578            color: #000;
20579            display: flex;
20580            align-items: center;
20581            justify-content: center;
20582            text-decoration: none;
20583            font-size: 1.2rem;
20584            transition: var(--transition);
20585        }
20586
20587        .social-link:hover {
20588            background: var(--syahi-green);
20589            transform: translateY(-3px);
20590        }
20591
20592        @media (max-width: 768px) {
20593            .mobile-menu-toggle { display: block; }
20594            .nav-container { padding-right: 170px; }
20595            .lang-toggle { padding: 5px; }
20596            .lang-toggle button { padding: 6px 10px; font-size: 0.75rem; }
20597            .nav-menu {
20598                position: fixed;
20599                top: 70px;
20600                left: 0;
20601                right: 0;
20602                background: var(--primary-color);
20603                flex-direction: column;
20604                padding: 2rem;
20605                transform: translateY(-100%);
20606                opacity: 0;
20607                visibility: hidden;
20608                transition: var(--transition);
20609            }
20610            .nav-menu.active {
20611                transform: translateY(0);
20612                opacity: 1;
20613                visibility: visible;
20614            }
20615            .artists-gallery {
20616                grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
20617                gap: 1.5rem;
20618            }
20619            .releases-grid, .videos-grid, .news-grid {
20620                grid-template-columns: 1fr;
20621            }
20622            .bio-artist-image {
20623                width: 200px;
20624                height: 200px;
20625            }
20626            .bio-artist-title h1 {
20627                font-size: 2rem;
20628            }
20629            .bio-text-section {
20630                padding: 2rem 1.5rem;
20631            }
20632        }
20633    
20634    .ev-nw-badge{position:fixed;bottom:72px;right:20px;z-index:9999;display:inline-flex;align-items:center;gap:5px;padding:8px 14px;background:rgba(2,2,8,.9);border:1px solid rgba(255,255,255,.14);border-radius:100px;font-size:.68rem;font-weight:600;color:rgba(255,255,255,.55);text-decoration:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);letter-spacing:.06em;text-transform:uppercase;transition:color .2s,border-color .2s,background .2s}
20635.ev-nw-badge:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(2,2,8,.97)}
20636.ev-nw-badge-mark{width:14px;
20636height:14px;display:grid;grid-template-columns:1fr 1fr;gap:2px;flex-shrink:0}
20637.ev-nw-badge-mark span{background:currentColor;border-radius:2px;display:block}
20638  </style>
20639
20640<a href="https://echovira.com" class="ev-nw-badge" target="_blank" rel="noopener" title="EchoVira Music Network">
20641  <div class="ev-nw-badge-mark"><span></span><span></span><span></span><span></span></div>
20642  EchoVira
20643</a>
20644
20645<nav class="main-nav" id="mainNav">
20646    <div class="nav-container">
20647        <a href="#home" class="logo">
20648            <img src="https://media.echovira.com/echovira/syahi_logo.png" alt="Syahi"
20649                srcset="https://media.echovira.com/echovira/syahi_logo-400.webp 400w, https://media.echovira.com/echovira/syahi_logo-800.webp 800w, https://media.echovira.com/echovira/syahi_logo-full.webp 1024w"
20650                sizes="50px" width="1024" height="1024" decoding="async">
20651        </a>
20652        <ul class="nav-menu" id="navMenu">
20653            <li class="lang-hi"><a href="#home">होम</a></li>
20654            <li class="lang-hi"><a href="#about">हमारे बारे में</a></li>
20655            <li class="lang-hi"><a href="#artists">कलाकार</a></li>
20656            <li class="lang-hi"><a href="#releases">रिलीज़</a></li>
20657            <li class="lang-hi"><a href="#videos">वीडियो</a></li>
20658            <li class="lang-hi"><a href="#news">समाचार</a></li>
20659            <li class="lang-en"><a href="#home">Home</a></li>
20660            <li class="lang-en"><a href="#about">About</a></li>
20661            <li class="lang-en"><a href="#artists">Artists</a></li>
20662            <li class="lang-en"><a href="#releases">Releases</a></li>
20663            <li class="lang-en"><a href="#videos">Videos</a></li>
20664            <li class="lang-en"><a href="#news">News</a></li>
20665        </ul>
20666        <button class="mobile-menu-toggle" id="mobileToggle">☰</button>
20667    </div>
20668<div class="lang-toggle">
20669        <button onclick="window.setLanguage&&setLanguage('hi')" class="lang-btn-hi active" data-lang="hi">हिंदी</button>
20670        <button onclick="window.setLanguage&&setLanguage('en')" class="lang-btn-en" data-lang="en">English</button>
20671    </div>
20672</nav>
20673
20674<span id="main-content" tabindex="-1"></span>
20675
20676<section class="hero-section" id="home">
20677    
20678    
20679    <div class="hero-content">
20680        <h1 class="hero-title">SYAHI</h1>
20681        <p class="hero-subtitle lang-hi">हिंदी संगीत बैंड | इंडी रॉक & पॉप | 12 प्रतिभाशाली कलाकार | अंतर्राष्ट्रीय ध्वनि</p>
20682        <p class="hero-subtitle lang-en">Hindi Music Band | Indie Rock & Pop | 12 Talented Artists | International Sound</p>
20683        <a href="#about" class="cta-button lang-hi">हमारा संगीत खोजें</a>
20684        <a href="#about" class="cta-button lang-en">Discover Our Music</a>
20685    </div>
20686</section>
20687
20688<section class="section" id="about">
20689    <div class="container">
20690        <h2 class="section-title lang-hi">स्याही के बारे में</h2>
20691        <h2 class="section-title lang-en">About Syahi</h2>
20692        <div class="about-content">
20693            <p class="lang-hi">
20694                <strong>स्याही (Syahi)</strong> — सिर्फ एक बैंड से कहीं अधिक, Syahi <strong>समकालीन हिंदी संगीत</strong> की एक नई लहर का प्रतिनिधित्व करता है। हम <strong>इंडी रॉक धुनों</strong> और <strong>हिंदी गीत परंपरा के तत्वों</strong> को आधुनिक <strong>इलेक्ट्रॉनिक संगीत</strong>, <strong>वैकल्पिक रॉक</strong> और <strong>प्रयोगात्मक ध्वनियों</strong> के साथ पूरी तरह से मिलाते हैं, एक अनूठी ध्वनि बनाते हैं जो सांस्कृतिक सीमाओं को पार करती है और दिलों को छूती है।
20695            </p>
20696            <p class="lang-hi">
20697                12 प्रतिभाशाली संगीतकारों द्वारा गठित — <strong>गायक</strong>, <strong>बहु-वाद्यवादक</strong>, <strong>संगीतकार और गीतकार</strong> — Syahi समकालीन <strong>हिंदी संगीत</strong> की विविधता और रचनात्मकता का प्रतिनिधित्व करता है। हम <strong>इंडी रॉक</strong>, <strong>इलेक्ट्रो-पॉप</strong>, <strong>जैज़</strong>, <strong>सोल</strong> और <strong>वैकल्पिक संगीत</strong> से प्रेरणा लेते हैं, <strong>विश्व स्तरीय गुणवत्ता</strong> के साथ <strong>
20697प्रामाणिक हिंदी पहचान</strong> के साथ काम का निर्माण करते हैं।
20698            </p>
20699            <p class="lang-hi">
20700                <strong>लाइव प्रदर्शन</strong> और मुंबई और पूरे भारत में <strong>संगीत समारोहों</strong> से लेकर सभी स्ट्रीमिंग प्लेटफार्मों (Spotify, Apple Music, YouTube Music) पर <strong>डिजिटल एल्बम</strong> और <strong>सिंगल</strong> जारी करने तक, Syahi एक संगीत विरासत का निर्माण कर रहा है जो भारत की समृद्ध संगीत विरासत का सम्मान करती है और वैश्विक नवाचार को अपनाती है।
20701            </p>
20702            
20703            <p class="lang-en">
20704                <strong>Syahi</strong> — more than just a band, Syahi represents a new wave of <strong>contemporary Hindi music</strong>. We perfectly blend <strong>indie rock melodies</strong> and <strong>elements of Hindi song tradition</strong> with modern <strong>electronic music</strong>, <strong>alternative rock</strong>, and <strong>experimental sounds</strong> to create a unique sound that transcends cultural boundaries and touches hearts.
20705            </p>
20706            <p class="lang-en">
20707                Formed by 12 talented musicians — <strong>vocalists</strong>, <strong>multi-instrumentalists</strong>, <strong>composers and lyricists</strong> — Syahi represents the diversity and creativity of contemporary <strong>Hindi music</strong>. We draw inspiration from <strong>indie rock</strong>, <strong>electro-pop</strong>, <strong>jazz</strong>, <strong>soul</strong>, and <strong>alternative music</strong> to produce works with <strong>world-class quality</strong> and <strong>authentic Hindi identity</strong>.
20708            </p>
20709            <p class="lang-en">
20710                From <strong>live performances</strong> and <strong>music festivals</strong> in Mumbai and across India to releasing <strong>digital albums</strong> and <strong>singles</strong> on all streaming platforms (Spotify, Apple Music, YouTube Music), Syahi is building a musical legacy that honors India's rich musical heritage while embracing global innovation.
20711            </p>
20712        </div>
20713    </div>
20714</section>
20715
20716<section class="section section-dark" id="artists">
20717    <div class="container">
20718        <h2 class="section-title lang-hi">कलाकार</h2>
20719        <h2 class="section-title lang-en">The Artists</h2>
20720        <div class="artists-gallery" id="artistsGallery">
20721<div class="artist-card" data-artist-id="aarav-khanna" style="cursor:pointer">
20722            <div class="artist-image-wrapper">
20723                <img src="https://media.echovira.com/syahi/syahi_aarav_khanna_male_singer_portrait_2.png" alt="Aarav Khanna" class="artist-image"
20724                srcset="https://media.echovira.com/syahi/syahi_aarav_khanna_male_singer_portrait_2-400.webp 400w, https://media.echovira.com/syahi/syahi_aarav_khanna_male_singer_portrait_2-800.webp 800w, https://media.echovira.com/syahi/syahi_aarav_khanna_male_singer_portrait_2-full.webp 1024w"
20725                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
20726                <div class="artist-overlay">
20727                    <div class="artist-stage-name">Aarav</div>
20728                    <div class="artist-role-badge lang-hi">गायक</div>
20729                    <div class="artist-role-badge lang-en">Male Singer</div>
20730                    <div class="artist-real-name">Aarav Khanna • 23 साल / years</div>
20731                </div>
20732            </div>
20733        </div><div class="artist-card" data-artist-id="anaya-sharma" style="cursor:pointer">
20734            <div class="artist-image-wrapper">
20735                <img src="https://media.echovira.com/syahi/syahi_anaya_sharma_female_singer_portrait_2.png" alt="Anaya Sharma" class="artist-image"
20736                srcset="https://media.echovira.com/syahi/syahi_anaya_sharma_female_singer_portrait_2-400.webp 400w, https://media.echovira.com/syahi/syahi_anaya_sharma_female_singer_portrait_2-800.webp 800w, https://media.echovira.com/syahi/syahi_anaya_sharma_female_singer_portrait_2-full.webp 1024w"
20737                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
20738                <div class="artist-overlay">
20739                    <div class="artist-stage-name">Anaya</div>
20740                    <div class="artist-role-badge lang-hi">गायिका</div>
20741                    <div class="artist-role-badge lang-en">Female Singer</div>
20742                    <div class="artist-real-name">Anaya Sharma • 25 साल / years</div>
20743                </div>
20744            </div>
20745        </div><div class="artist-card" data-artist-id="arjun-malhotra" style="cursor:pointer">
20746            <div class="artist-image-wrapper">
20747                <img src="https://media.echovira.com/syahi/syahi_arjun_malhotra_male_singer_portrait_1.png" alt="Arjun Malhotra" class="artist-image"
20748                srcset="https://media.echovira.com/syahi/syahi_arjun_malhotra_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/syahi/syahi_arjun_malhotra_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/syahi/syahi_arjun_malhotra_male_singer_portrait_1-full.webp 1024w"
20749                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
20750                <div class="artist-overlay">
20751                    <div class="artist-stage-name">Arjun</div>
20752                    <div class="artist-role-badge lang-hi">गायक</div>
20753                    <div class="artist-role-badge lang-en">Male Singer</div>
20754                    <div class="artist-real-name">Arjun Malhotra • 25 साल / years</div>
20755                </div>
20756            </div>
20757        </div><div class="artist-card" data-artist-id="dev-anand" style="cursor:pointer">
20758            <div class="artist-image-wrapper">
20759                <img src="https://media.echovira.com/syahi/syahi_dev_anand_male_singer_portrait_1.png" alt="Dev Anand" class="artist-image"
20760                srcset="https://media.echovira.com/syahi/syahi_dev_anand_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/syahi/syahi_dev_anand_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/syahi/syahi_dev_anand_male_singer_portrait_1-full.webp 1024w"
20761                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
20762                <div class="artist-overlay">
20763                    <div class="artist-stage-name">Dev</div>
20764                    <div class="artist-role-badge lang-hi">गायक</div>
20765                    <div class="artist-role-badge lang-en">Male Singer</div>
20766                    <div class="artist-real-name">Dev Anand • 24 साल / years</div>
20767                </div>
20768            </div>
20769        </div><div class="artist-card" data-artist-id="ishani-patel" style="cursor:pointer">
20770            <div class="artist-image-wrapper">
20771                <img src="https://media.echovira.com/syahi/syahi_ishani_patel_female_singer_portrait_0.png" alt="Ishani Patel" class="artist-image"
20772                srcset="https://media.echovira.com/syahi/syahi_ishani_patel_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/syahi/syahi_ishani_patel_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/syahi/syahi_ishani_patel_female_singer_portrait_0-full.webp 1024w"
20773                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
20774                <div class="artist-overlay">
20775                    <div class="artist-stage-name">Ishani</div>
20776                    <div class="artist-role-badge lang-hi">गायिका</div>
20777                    <div class="artist-role-badge lang-en">Female Singer</div>
20778                    <div class="artist-real-name">Ishani Patel • 23 साल / years</div>
20779                </div>
20780            </div>
20781        </div><div class="artist-card" data-artist-id="kabir-mehra" style="cursor:pointer">
20782            <div class="artist-image-wrapper">
20783                <img src="https://media.echovira.com/syahi/syahi_kabir_mehra_male_singer_portrait_1.png" alt="Kabir Mehra" class="artist-image"
20784                srcset="https://media.echovira.com/syahi/syahi_kabir_mehra_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/syahi/syahi_kabir_mehra_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/syahi/syahi_kabir_mehra_male_singer_portrait_1-full.
20784webp 1024w"
20785                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
20786                <div class="artist-overlay">
20787                    <div class="artist-stage-name">Kabir</div>
20788                    <div class="artist-role-badge lang-hi">गायक</div>
20789                    <div class="artist-role-badge lang-en">Male Singer</div>
20790                    <div class="artist-real-name">Kabir Mehra • 26 साल / years</div>
20791                </div>
20792            </div>
20793        </div><div class="artist-card" data-artist-id="kavya-nair" style="cursor:pointer">
20794            <div class="artist-image-wrapper">
20795                <img src="https://media.echovira.com/syahi/syahi_kavya_nair_female_singer_portrait_1.png" alt="Kavya Nair" class="artist-image"
20796                srcset="https://media.echovira.com/syahi/syahi_kavya_nair_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/syahi/syahi_kavya_nair_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/syahi/syahi_kavya_nair_female_singer_portrait_1-full.webp 1024w"
20797                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
20798                <div class="artist-overlay">
20799                    <div class="artist-stage-name">Kavya</div>
20800                    <div class="artist-role-badge lang-hi">गायिका</div>
20801                    <div class="artist-role-badge lang-en">Female Singer</div>
20802                    <div class="artist-real-name">Kavya Nair • 26 साल / years</div>
20803                </div>
20804            </div>
20805        </div><div class="artist-card" data-artist-id="meera-iyer" style="cursor:pointer">
20806            <div class="artist-image-wrapper">
20807                <img src="https://media.echovira.com/syahi/syahi_meera_iyer_female_singer_portrait_1.png" alt="Meera Iyer" class="artist-image"
20808                srcset="https://media.echovira.com/syahi/syahi_meera_iyer_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/syahi/syahi_meera_iyer_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/syahi/syahi_meera_iyer_female_singer_portrait_1-full.webp 1024w"
20809                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
20810                <div class="artist-overlay">
20811                    <div class="artist-stage-name">Meera</div>
20812                    <div class="artist-role-badge lang-hi">गायिका</div>
20813                    <div class="artist-role-badge lang-en">Female Singer</div>
20814                    <div class="artist-real-name">Meera Iyer • 24 साल / years</div>
20815                </div>
20816            </div>
20817        </div><div class="artist-card" data-artist-id="naina-verma" style="cursor:pointer">
20818            <div class="artist-image-wrapper">
20819                <img src="https://media.echovira.com/syahi/syahi_naina_verma_composer_lyricist_portrait_2.png" alt="Naina Verma" class="artist-image"
20820                srcset="https://media.echovira.com/syahi/syahi_naina_verma_composer_lyricist_portrait_2-400.webp 400w, https://media.echovira.com/syahi/syahi_naina_verma_composer_lyricist_portrait_2-800.webp 800w, https://media.echovira.com/syahi/syahi_naina_verma_composer_lyricist_portrait_2-full.webp 1024w"
20821                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
20822                <div class="artist-overlay">
20823                    <div class="artist-stage-name">Naina</div>
20824                    <div class="artist-role-badge lang-hi">संगीतकार और गीतकार</div>
20825                    <div class="artist-role-badge lang-en">Composer & Lyricist</div>
20826                    <div class="artist-real-name">Naina Verma • 27 साल / years</div>
20827                </div>
20828            </div>
20829        </div><div class="artist-card" data-artist-id="rohan-kapoor" style="cursor:pointer">
20830            <div class="artist-image-wrapper">
20831                <img src="https://media.echovira.com/syahi/syahi_rohan_kapoor_male_singer_portrait_1.png" alt="Rohan Kapoor" class="artist-image"
20832                srcset="https://media.echovira.com/syahi/syahi_rohan_kapoor_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/syahi/syahi_rohan_kapoor_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/syahi/syahi_rohan_kapoor_male_singer_portrait_1-full.
20832webp 1024w"
20833                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
20834                <div class="artist-overlay">
20835                    <div class="artist-stage-name">Rohan</div>
20836                    <div class="artist-role-badge lang-hi">गायक</div>
20837                    <div class="artist-role-badge lang-en">Male Singer</div>
20838                    <div class="artist-real-name">Rohan Kapoor • 27 साल / years</div>
20839                </div>
20840            </div>
20841        </div><div class="artist-card" data-artist-id="simran-chawla" style="cursor:pointer">
20842            <div class="artist-image-wrapper">
20843                <img src="https://media.echovira.com/syahi/syahi_simran_chawla_multi_instrumentalist_keyboard_guitar_portrait_0.png" alt="Simran Chawla" class="artist-image"
20844                srcset="https://media.echovira.com/syahi/syahi_simran_chawla_multi_instrumentalist_keyboard_guitar_portrait_0-400.webp 400w, https://media.echovira.com/syahi/syahi_simran_chawla_multi_instrumentalist_keyboard_guitar_portrait_0-800.webp 800w, https://media.echovira.com/syahi/syahi_simran_chawla_multi_instrumentalist_keyboard_guitar_portrait_0-full.webp 1024w"
20845                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
20846                <div class="artist-overlay">
20847                    <div class="artist-stage-name">Simran</div>
20848                    <div class="artist-role-badge lang-hi">बहु-वाद्यवादक (कीबोर्ड और गिटार)</div>
20849                    <div class="artist-role-badge lang-en">Multi-Instrumentalist (Keyboard & Guitar)</div>
20850                    <div class="artist-real-name">Simran Chawla • 24 साल / years</div>
20851                </div>
20852            </div>
20853        </div><div class="artist-card" data-artist-id="tara-reddy" style="cursor:pointer">
20854            <div class="artist-image-wrapper">
20855                <img src="https://media.echovira.com/syahi/syahi_tara_reddy_female_singer_portrait_2.png" alt="Tara Reddy" class="artist-image"
20856                srcset="https://media.echovira.com/syahi/syahi_tara_reddy_female_singer_portrait_2-400.webp 400w, https://media.echovira.com/syahi/syahi_tara_reddy_female_singer_portrait_2-800.webp 800w, https://media.echovira.com/syahi/syahi_tara_reddy_female_singer_portrait_2-full.webp 1024w"
20857                sizes="(max-width: 600px) 100vw, (max-width: 900px) 50vw, 33vw" width="1024" height="1024" decoding="async">
20858                <div class="artist-overlay">
20859                    <div class="artist-stage-name">Tara</div>
20860                    <div class="artist-role-badge lang-hi">गायिका</div>
20861                    <div class="artist-role-badge lang-en">Female Singer</div>
20862                    <div class="artist-real-name">Tara Reddy • 27 साल / years</div>
20863                </div>
20864            </div>
20865        </div>
20866</div>
20867    </div>
20868</section>
20869
20870<section class="section" id="releases">
20871    <div class="container">
20872        <h2 class="section-title lang-hi">नवीनतम रिलीज़</h2>
20873        <h2 class="section-title lang-en">Latest Releases</h2>
20874        <div class="releases-grid" id="releasesGrid">
20875        <div class="release-card">
20876            <div class="release-image">🎵</div>
20877            <div class="release-info">
20878                <h3 class="release-title lang-hi">Syahi - पहला सिंगल</h3>
20879                <h3 class="release-title lang-en">Syahi - First Single</h3>
20880                <p class="release-description lang-hi">सोशल मीडिया पर Syahi का संगीत सुनें</p>
20881                <p class="release-description lang-en">Listen to Syahi's music on social media</p>
20882                <div class="streaming-links">
20883                    <a href="https://www.youtube.com/@SyahiOfficial" target="_blank" class="streaming-link">YouTube</a>
20884                    <a href="https://www.instagram.com/syahimusicband/" target="_blank" class="streaming-link">Instagram</a>
20885                    <a href="https://www.tiktok.com/@syahiofficial" target="_blank" class="streaming-link">TikTok</a>
20886                </div>
20887            </div>
20888        </div>
20889    </div>
20890    </div>
20891</section>
20892
20893<section class="section section-dark" id="videos">
20894    <div class="container">
20895        <h2 class="section-title lang-hi">संगीत वीडियो</h2>
20896        <h2 class="section-title lang-en">Music Videos</h2>
20897        <div class="videos-grid" id="videosGrid">
20898        <div class="video-card">
20899            <div class="video-embed">📹</div>
20900            <div class="video-info">
20901                <h3 class="video-title lang-hi">Syahi - संगीत वीडियो</h3>
20902                <h3 class="video-title lang-en">Syahi - Music Video</h3>
20903                <p class="lang-hi">YouTube पर हमारे नवीनतम क्लिप और लाइव प्रदर्शन देखें</p>
20904                <p class="lang-en">Watch our latest music videos and live performances on YouTube</p>
20905                <a href="https://www.youtube.com/@SyahiOfficial" target="_blank" class="video-link lang-hi">YouTube पर देखें →</a>
20906                <a href="https://www.youtube.com/@SyahiOfficial" target="_blank" class="video-link lang-en">Watch on YouTube →</a>
20907            </div>
20908        </div>
20909        <div class="video-card">
20910            <div class="video-embed">🎬</div>
20911            <div class="video-info">
20912                <h3 class="video-title lang-hi">छोटे वीडियो</h3>
20913                <h3 class="video-title lang-en">Short Videos</h3>
20914                <p class="lang-hi">TikTok और Instagram पर हमारे पर्दे के पीछे और संगीत क्लिप फॉलो करें</p>
20915                <p class="lang-en">Follow our behind-the-scenes and music clips on TikTok and Instagram</p>
20916                <a href="https://www.tiktok.com/@syahiofficial" target="_blank" class="video-link lang-hi">TikTok पर देखें →</a>
20917                <a href="https://www.tiktok.com/@syahiofficial" target="_blank" class="video-link lang-en">Watch on TikTok →</a>
20918            </div>
20919        </div>
20920    </div>
20921        <div class="view-all-btn">
20922            <a href="https://www.youtube.com/@SyahiOfficial" target="_blank" class="lang-hi">YouTube पर और देखें</a>
20923            <a href="https://www.youtube.com/@SyahiOfficial" target="_blank" class="lang-en">Watch More on YouTube</a>
20924        </div>
20925    </div>
20926</section>
20927
20928<section class="section" id="news">
20929    <div class="container">
20930        <h2 class="section-title lang-hi">ताज़ा खबर</h2>
20931        <h2 class="section-title lang-en">Latest News</h2>
20932        <div class="news-grid" id="newsGrid">
20933        <div class="news-card">
20934            <div class="news-image">📰</div>
20935            <div class="news-content">
20936                <h3 class="news-title lang-hi">
20936Syahi की दुनिया में आपका स्वागत है</h3>
20937                <h3 class="news-title lang-en">Welcome to Syahi's World</h3>
20938                <p class="news-excerpt lang-hi">बैंड, नई रिलीज़ और कॉन्सर्ट के बारे में नवीनतम समाचार के लिए हमें सोशल मीडिया पर फॉलो करें</p>
20939                <p class="news-excerpt lang-en">Follow us on social media for latest news about the band, new releases, and live concerts</p>
20940                <a href="https://www.instagram.com/syahimusicband/" target="_blank" class="read-more lang-hi">Instagram पर फॉलो करें →</a>
20941                <a href="https://www.instagram.com/syahimusicband/" target="_blank" class="read-more lang-en">Follow on Instagram →</a>
20942            </div>
20943        </div>
20944        <div class="news-card">
20945            <div class="news-image">🎤</div>
20946            <div class="news-content">
20947                <h3 class="news-title lang-hi">कलाकारों से मिलें</h3>
20948                <h3 class="news-title lang-en">Meet the Artists</h3>
20949                <p class="news-excerpt lang-hi">हमारे 12 कलाकारों की कहानियाँ खोजें और हमारे पेजों पर रिहर्सल और कॉन्सर्ट के पल देखें</p>
20950                <p class="news-excerpt lang-en">Discover the stories of our 12 artists and watch rehearsal and concert moments on our pages</p>
20951                <a href="https://facebook.com/Syahimusicband" target="_blank" class="read-more lang-hi">हमारा पेज देखें →</a>
20952                <a href="https://facebook.com/Syahimusicband" target="_blank" class="read-more lang-en">Visit Our Page →</a>
20953            </div>
20954        </div>
20955    </div>
20956    </div>
20957</section>
20958
20959<footer class="main-footer">
20960    <div class="container">
20961        <div class="social-links">
20962            <a href="https://www.youtube.com/@SyahiOfficial" target="_blank" class="social-link">▶</a>
20963            <a href="https://www.instagram.com/syahimusicband/" target="_blank" class="social-link">📷</a>
20964            <a href="https://www.tiktok.com/@syahiofficial" target="_blank" class="social-link">🎵</a>
20965            <a href="https://facebook.com/Syahimusicband" target="_blank" class="social-link">👥</a>
20966        </div>
20967        <p class="lang-hi">&copy; 2025 Syahi. सर्वाधिकार सुरक्षित।</p>
20968        <p class="lang-en">&copy; 2025 Syahi. All rights reserved.</p>
20969    </div>
20970</footer>
20971
20972
20973
20974
20975<div id="bioPages">
20976<div id="bio-aarav-khanna" class="bio-page">
20977            <div class="bio-header">
20978                <div class="container">
20979                    <a href="#artists" data-action="back" class="back-button lang-hi">← कलाकारों के पास वापस</a>
20980                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
20981                </div>
20982            </div>
20983            
20984            <div class="bio-content">
20985                <div class="bio-card">
20986                    <div class="bio-image-section">
20987                        <img src="https://media.echovira.com/syahi/syahi_aarav_khanna_male_singer_portrait_2.png" alt="Aarav Khanna" class="bio-artist-image"
20988                srcset="https://media.echovira.com/syahi/syahi_aarav_khanna_male_singer_portrait_2-400.webp 400w, https://media.echovira.com/syahi/syahi_aarav_khanna_male_singer_portrait_2-800.webp 800w, https://media.echovira.com/syahi/syahi_aarav_khanna_male_singer_portrait_2-full.webp 1024w"
20989                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
20990                    </div>
20991                    <div class="bio-text-section">
20992                        <div class="bio-artist-title">
20993                            <h1>Aarav Khanna</h1>
20994                            <div class="stage-name">"Aarav" • 23 साल / years</div>
20995                            <div class="role lang-hi">गायक</div>
20996                            <div class="role lang-en">Male Singer</div>
20997                        </div>
20998                        <div class="bio-description lang-hi">
20999                            <p>आरव खन्ना से मिलिए — आरव, 23, Syahi के नए मुख्य गायक। ऊर्जावान, सबसे युवा आवाज़ — एक उत्à
20999¤¸à¤¾à¤¹à¤¿à¤¤, आकर्षक कलाकार।</p><p>23 साल की उम्र में, आरव एक उज्ज्वल, अभिव्यंजक स्वर और लोचदार रेंज के साथ Syahi की ध्वनि को आकार देते हैं, स्टूडियो ट्रैक और लाइव सेट दोनों को उठाने के लिए सटीक वाक्यांश और नियंत्रित गतिशीलता का उपयोग करते हैं।</p><p>समकालीन इंडी और शास्त्रीय वाक्यांश में निहित उनकी मंच उपस्थिति, व्यवस्थाओं को पंचियर ग्रूव्स और यादगार हुक की ओर धकेलती है। आरव धुनों को यादगार हुक में बदल देते हैं, और उनकी मुखर पसंद बैंड के स्टूडियो बनावट और लाइव गति को आकार देती है।</p>
21000                        </div>
21001                        <div class="bio-description lang-en">
21002                            <p>Meet Aarav Khanna — Aarav, 23, Syahi's new male vocalist. The energetic, youngest voice of Syahi — an upbeat, engaging performer.</p><p>At 23, Aarav shapes Syahi's sound with a bright, expressive timbre and elastic range, using precise phrasing and controlled dynamics to lift both studio tracks and live sets.</p><p>His stage presence, rooted in contemporary indie and classic phrasing, pushes arrangements toward punchier grooves and memorable hooks. Aarav turns melodies into memorable hooks, and his vocal choices shape the band's studio textures and live momentum.</p>
21003                        </div>
21004                    </div>
21005                </div>
21006            </div>
21007        </div>
21008<div id="bio-anaya-sharma" class="bio-page">
21009            <div class="bio-header">
21010                <div class="container">
21011                    <a href="#artists" data-action="back" class="back-button lang-hi">← कलाकारों के पास वापस</a>
21012                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
21013                </div>
21014            </div>
21015            
21016            <div class="bio-content">
21017                <div class="bio-card">
21018                    <div class="bio-image-section">
21019                        <img src="https://media.echovira.com/syahi/syahi_anaya_sharma_female_singer_portrait_2.png" alt="Anaya Sharma" class="bio-artist-image"
21020                srcset="https://media.echovira.com/syahi/syahi_anaya_sharma_female_singer_portrait_2-400.webp 400w, https://media.echovira.com/syahi/syahi_anaya_sharma_female_singer_portrait_2-800.webp 800w, https://media.echovira.com/syahi/syahi_anaya_sharma_female_singer_portrait_2-full.webp 1024w"
21021                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
21022                    </div>
21023                    <div class="bio-text-section">
21024                        <div class="bio-artist-title">
21025                            <h1>Anaya Sharma</h1>
21026                            <div class="stage-name">"Anaya" • 25 साल / years</div>
21027                            <div class="role lang-hi">गायिका</div>
21028                            <div class="role lang-en">Female Singer</div>
21029                        </div>
21030                        <div class="bio-description lang-hi">
21031                            <p>अनया (अनया शर्मा) से मिलिए, 25 — Syahi की नई महिला गायिका। शक्तिशाली स्वरों और संतुलित, सुरुचिपूर्ण मंच उपस्थिति के साथ एक दीप्तिमान कलाकार।</p><p>उनकी गर्म, गूंजती स्वर एक विस्तृत रेंज में फैली हुई है, सटीक वाक्यांश और गतिशील नियंत्रण के साथ जो हर à¤
21031ªà¤‚क्ति में भावनात्मक सूक्ष्मता लाते हैं। वह यादगार धुनों को आकार देने के लिए शास्त्रीय वाक्यांश, इंडी संवेदनशीलता और समकालीन पॉप रंग को मिलाती है।</p><p>मंच पर उनकी मापी गई उपस्थिति शांत क्षणों को हाइलाइट्स में बदल देती है और कुरकुरा तीव्रता के साथ चरमोत्कर्ष वर्गों को आगे बढ़ाती है। अनया की लीड लाइनें Syahi के ध्वनि पैलेट का विस्तार करती हैं, बैंड को स्पष्ट गीतात्मक फोकस और बोल्डर लाइव ऊर्जा देती हैं।</p>
21032                        </div>
21033                        <div class="bio-description lang-en">
21034                            <p>Meet Anaya (Anaya Sharma), 25 — Syahi's new female singer. A radiant performer with powerful vocals and a poised, elegant stage presence.</p><p>Her warm, resonant timbre stretches across a wide range, with precise phrasing and dynamic control that bring emotional nuance to every line. She blends classical phrasing, indie sensibility, and contemporary pop color to shape memorable melodies.</p><p>On stage her measured presence turns quiet moments into highlights and propels climactic sections with crisp intensity. Anaya's lead lines expand Syahi's sonic palette, giving the band clearer lyrical focus and bolder live energy.</p>
21035                        </div>
21036                    </div>
21037                </div>
21038            </div>
21039        </div>
21040<div id="bio-arjun-malhotra" class="bio-page">
21041            <div class="bio-header">
21042                <div class="container">
21043                    <a href="#artists" data-action="back" class="back-button lang-hi">← कलाकारों के पास वापस</a>
21044                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
21045                </div>
21046            </div>
21047            
21048            <div class="bio-content">
21049                <div class="bio-card">
21050                    <div class="bio-image-section">
21051                        <img src="https://media.echovira.com/syahi/syahi_arjun_malhotra_male_singer_portrait_1.png" alt="Arjun Malhotra" class="bio-artist-image"
21052                srcset="https://media.echovira.com/syahi/syahi_arjun_malhotra_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/syahi/syahi_arjun_malhotra_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/syahi/syahi_arjun_malhotra_male_singer_portrait_1-full.webp 1024w"
21053                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
21054                    </div>
21055                    <div class="bio-text-section">
21056                        <div class="bio-artist-title">
21057                            <h1>Arjun Malhotra</h1>
21058                            <div class="stage-name">"Arjun" • 25 साल / years</div>
21059                            <div class="role lang-hi">गायक</div>
21060                            <div class="role lang-en">Male Singer</div>
21061                        </div>
21062                        <div class="bio-description lang-hi">
21063                            <p>अर्जुन मल्होत्रा से मिलिए — अर्जुन, 25, Syahi के नए मुख्य गायक। आत्मीय वितरण और एक सुलभ स्टार-बॉय आकर्षण के साथ एक चिकना, रोमांटिक गायक।</p><p>वह एक गर्म, अंतरंग आवाज़ लाते हैं जो Syahi की ध्वनि में स्लॉट करती है और हमारी लाइव ऊर्जा को एक नए स्तर पर उठाà
21063¤¤à¥€ है। एक गायक के रूप में वह मखमली स्वर, एक लचीली रेंज, सूक्ष्म वाक्यांश और नियंत्रित गतिशीलता को मिश्रित करते हैं, आधुनिक इंडी और शास्त्रीय सोल से प्रभावित।</p><p>मंच पर उनकी उपस्थिति खुली और चुंबकीय है, शांत क्षणों को गाने-साथ की ऊंचाइयों में बदल देती है और रात-दर-रात बैंड की गतिशीलता को संचालित करती है।</p>
21064                        </div>
21065                        <div class="bio-description lang-en">
21066                            <p>Meet Arjun Malhotra — Arjun, 25, the new male singer of Syahi. A smooth, romantic vocalist with soulful delivery and an approachable star-boy charm.</p><p>He brings a warm, intimate voice that slots into Syahi's sound and lifts our live energy to a new level. As a vocalist he blends a velvety timbre, a flexible range, nuanced phrasing and controlled dynamics, influenced by modern indie and classic soul.</p><p>On stage his presence is open and magnetic, turning quiet moments into sing-along highs and steering the band's dynamics night after night.</p>
21067                        </div>
21068                    </div>
21069                </div>
21070            </div>
21071        </div>
21072<div id="bio-dev-anand" class="bio-page">
21073            <div class="bio-header">
21074                <div class="container">
21075                    <a href="#artists" data-action="back" class="back-button lang-hi">← कलाकारों के पास वापस</a>
21076                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
21077                </div>
21078            </div>
21079            
21080            <div class="bio-content">
21081                <div class="bio-card">
21082                    <div class="bio-image-section">
21083                        <img src="https://media.echovira.com/syahi/syahi_dev_anand_male_singer_portrait_1.png" alt="Dev Anand" class="bio-artist-image"
21084                srcset="https://media.echovira.com/syahi/syahi_dev_anand_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/syahi/syahi_dev_anand_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/syahi/syahi_dev_anand_male_singer_portrait_1-full.webp 1024w"
21085                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
21086                    </div>
21087                    <div class="bio-text-section">
21088                        <div class="bio-artist-title">
21089                            <h1>Dev Anand</h1>
21090                            <div class="stage-name">"Dev" • 24 साल / years</div>
21091                            <div class="role lang-hi">गायक</div>
21092                            <div class="role lang-en">Male Singer</div>
21093                        </div>
21094                        <div class="bio-description lang-hi">
21095                            <p>देव से मिलिए — Syahi की नई आवाज़। 24 साल की उम्र में, देव आनंद (मंच नाम देव) बैंड में एक ताज़ा उपस्थिति लाते हैं। आत्मीय भावनात्मक स्वर और काव्यात्मक ऊर्जा के साथ एक हार्दिक गायक।</p><p>उनकी आवाज़ गर्म और गूंजती है, एक विस्तृत रेंज में आरामदायक, अभिव्यंजक वाक्यांश, सटीक गतिशीलता, और इंडी, शास्त्रीय और लोक परंपराओं के लिए शैलीगत संकेतों के साथ।</p><p>
21095Syahi के प्रमुख गायक के रूप में, देव का स्वर और मंच उपस्थिति बैंड की ध्वनि बनावट को आकार देती है और अंतरंग तीव्रता और लयबद्ध ड्राइव के साथ लाइव प्रदर्शन उठाती है।</p>
21096                        </div>
21097                        <div class="bio-description lang-en">
21098                            <p>Meet Dev — the new voice of Syahi. At 24, Dev Anand (stage name Dev) brings a fresh presence to the band. A heartfelt singer with a soulful emotional tone and poetic energy.</p><p>His voice is warm and resonant, comfortable across a wide range, with expressive phrasing, precise dynamics, and stylistic nods to indie, classical, and folk traditions.</p><p>As Syahi's lead vocalist, Dev's timbre and stage presence shape the band's sonic textures and lift live performances with intimate intensity and rhythmic drive.</p>
21099                        </div>
21100                    </div>
21101                </div>
21102            </div>
21103        </div>
21104<div id="bio-ishani-patel" class="bio-page">
21105            <div class="bio-header">
21106                <div class="container">
21107                    <a href="#artists" data-action="back" class="back-button lang-hi">← कलाकारों के पास वापस</a>
21108                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
21109                </div>
21110            </div>
21111            
21112            <div class="bio-content">
21113                <div class="bio-card">
21114                    <div class="bio-image-section">
21115                        <img src="https://media.echovira.com/syahi/syahi_ishani_patel_female_singer_portrait_0.png" alt="Ishani Patel" class="bio-artist-image"
21116                srcset="https://media.echovira.com/syahi/syahi_ishani_patel_female_singer_portrait_0-400.webp 400w, https://media.echovira.com/syahi/syahi_ishani_patel_female_singer_portrait_0-800.webp 800w, https://media.echovira.com/syahi/syahi_ishani_patel_female_singer_portrait_0-full.webp 1024w"
21117                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
21118                    </div>
21119                    <div class="bio-text-section">
21120                        <div class="bio-artist-title">
21121                            <h1>Ishani Patel</h1>
21122                            <div class="stage-name">"Ishani" • 23 साल / years</div>
21123                            <div class="role lang-hi">गायिका</div>
21124                            <div class="role lang-en">Female Singer</div>
21125                        </div>
21126                        <div class="bio-description lang-hi">
21127                            <p>ईशानी पटेल से मिलिए — मंच नाम ईशानी, 23, Syahi की नई महिला गायिका। वह Syahi की उज्ज्वल, युवा ऊर्जा लाती है — आकर्षक, खेल और चिंगारी से भरी।</p><p>उनकी गर्म, जीवंत स्वर और लचीली रेंज उन्हें आत्मविश्वास वाक्यांश और सूक्ष्म गतिशील नियंत्रण के साथ अंतरंग छंदों से उच्च, उड़ान भरने वाले कोरस में जाने देती है। इंडी-पॉप और हिंदुस्तानी वाक्यांश में निहित, उनके शैलीगत स्पर्श और प्राकृतिक मंच करिश्मा हर व्यवस्था को उठाते हैं।</p><p>Syahi की प्रमुख आवाज़ के रूप में, ईशानी बैंड की धुनों को आकार देती है और लाइव शो को एक उत्à
21127¤ªà¥à¤²à¤¾à¤µà¤• केंद्र देती है — वह ग्रूव्स को गाने-साथ के क्षणों में बदल देती है और ताज़ा मधुर विचारों के साथ व्यवस्थाओं को रंग देती है।</p>
21128                        </div>
21129                        <div class="bio-description lang-en">
21130                            <p>Meet Ishani Patel — stage name Ishani, 23, the new female singer of Syahi. She brings Syahi's bright, youthful energy — charming, playful, and full of spark.</p><p>Her warm, vibrant timbre and flexible range let her move from intimate verses to high, soaring choruses with confident phrasing and nuanced dynamic control. Rooted in indie-pop and Hindustani phrasing, her stylistic touches and natural stage charisma lift every arrangement.</p><p>As Syahi's lead voice, Ishani shapes the band's melodies and gives live shows a buoyant center — she turns grooves into sing-along moments and colors arrangements with fresh melodic ideas.</p>
21131                        </div>
21132                    </div>
21133                </div>
21134            </div>
21135        </div>
21136<div id="bio-kabir-mehra" class="bio-page">
21137            <div class="bio-header">
21138                <div class="container">
21139                    <a href="#artists" data-action="back" class="back-button lang-hi">← कलाकारों के पास वापस</a>
21140                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
21141                </div>
21142            </div>
21143            
21144            <div class="bio-content">
21145                <div class="bio-card">
21146                    <div class="bio-image-section">
21147                        <img src="https://media.echovira.com/syahi/syahi_kabir_mehra_male_singer_portrait_1.png" alt="Kabir Mehra" class="bio-artist-image"
21148                srcset="https://media.echovira.com/syahi/syahi_kabir_mehra_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/syahi/syahi_kabir_mehra_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/syahi/syahi_kabir_mehra_male_singer_portrait_1-full.webp 1024w"
21149                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
21150                    </div>
21151                    <div class="bio-text-section">
21152                        <div class="bio-artist-title">
21153                            <h1>Kabir Mehra</h1>
21154                            <div class="stage-name">"Kabir" • 26 साल / years</div>
21155                            <div class="role lang-hi">गायक</div>
21156                            <div class="role lang-en">Male Singer</div>
21157                        </div>
21158                        <div class="bio-description lang-hi">
21159                            <p>कबीर मेहरा (कबीर) से मिलिए, 26 — Syahi के मुख्य गायक। पॉप ताकत के साथ R&B चिकनाई को मिश्रित करने वाला एक बहुमुखी गायक।</p><p>उनका गर्म टेनर स्वर, विस्तृत रेंज और सटीक वाक्यांश उन्हें अंतरंग R&B छंदों से पंची पॉप कोरस में आसानी से जाने देता है। नियंत्रित गतिशीलता और स्वादिष्ट रन बैंड की व्यवस्थाओं को आकार देते हैं, जबकि उनकी आत्मविश्वास मंच उपस्थिति लाइव ऊर्जा और दर्शकों के संबंध को बढ़ाती है।</p><p>शास्त्रीय R&B वाक्यांश और समकालीन पॉप मेलोडी से प्रभावित, कबीर अंतरंगता और गानात्मक हुक दोनों की ओर Syahi को संचालित करने में मदद करते हैं।</p>
21160                        </div>
21161                        <div class="bio-description lang-en">
21162                            <p>Meet Kabir Mehra (Kabir), 26 — Syahi's male singer. A versatile vocalist blending R&B smoothness with pop strength.</p><p>His warm tenor timbre, wide range and precise phrasing let him move from intimate R&B verses to punchy pop choruses with ease. Controlled dynamics and tasteful runs shape the band's arrangements, while his confident stage presence raises live energy and audience connection.</p><p>Influenced by classic R&B phrasing and contemporary pop melody, Kabir helps steer Syahi toward both intimacy and anthemic hooks.</p>
21163                        </div>
21164                    </div>
21165                </div>
21166            </div>
21167        </div>
21168<div id="bio-kavya-nair" class="bio-page">
21169            <div class="bio-header">
21170                <div class="container">
21171                    <a href="#artists" data-action="back" class="back-button lang-hi">← कलाकारों के पास वापस</a>
21172                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
21173                </div>
21174            </div>
21175            
21176            <div class="bio-content">
21177                <div class="bio-card">
21178                    <div class="bio-image-section">
21179                        <img src="https://media.echovira.com/syahi/syahi_kavya_nair_female_singer_portrait_1.png" alt="Kavya Nair" class="bio-artist-image"
21180                srcset="https://media.echovira.com/syahi/syahi_kavya_nair_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/syahi/syahi_kavya_nair_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/syahi/syahi_kavya_nair_female_singer_portrait_1-full.
21180webp 1024w"
21181                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
21182                    </div>
21183                    <div class="bio-text-section">
21184                        <div class="bio-artist-title">
21185                            <h1>Kavya Nair</h1>
21186                            <div class="stage-name">"Kavya" • 26 साल / years</div>
21187                            <div class="role lang-hi">गायिका</div>
21188                            <div class="role lang-en">Female Singer</div>
21189                        </div>
21190                        <div class="bio-description lang-hi">
21191                            <p>काव्या नायर से मिलिए — काव्या, Syahi की नई आवाज़। 26 साल की उम्र में, वह हर मंच पर तीव्रता और संतुलन लाती है।</p><p>Syahi की पावरहाउस दीवा के रूप में जानी जाती है, काव्या एक आदेशात्मक मंच उपस्थिति लाती है जो बैंड के प्रदर्शन को लंगर डालती है। उनका दृष्टिकोण नाटकीयता के बजाय संगीत स्पष्टता और ईमानदार भावनात्मक वितरण पर केंद्रित है।</p><p>एक गायक के रूप में वह एक गर्म, ऑल्टो-झुकाव स्वर को एक व्यापक रेंज, सावधानीपूर्वक वाक्यांश और हिंदुस्तानी मेलोडी और समकालीन पॉप से प्रभावित सूक्ष्म गतिशीलता के साथ जोड़ती है।</p>
21192                        </div>
21193                        <div class="bio-description lang-en">
21194                            <p>Meet Kavya Nair — Kavya, Syahi's new voice. At 26, she brings intensity and poise to every stage.</p><p>Known as the powerhouse diva of Syahi, Kavya brings a commanding stage presence that anchors the band's performances. Her approach is focused on musical clarity and honest emotional delivery rather than theatrics.</p><p>As a vocalist she pairs a warm, alto-leaning timbre with a broad range, careful phrasing, and nuanced dynamics influenced by Hindustani melody and contemporary pop.</p>
21195                        </div>
21196                    </div>
21197                </div>
21198            </div>
21199        </div>
21200<div id="bio-meera-iyer" class="bio-page">
21201            <div class="bio-header">
21202                <div class="container">
21203                    <a href="#artists" data-action="back" class="back-button lang-hi">← कलाकारों के पास वापस</a>
21204                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
21205                </div>
21206            </div>
21207            
21208            <div class="bio-content">
21209                <div class="bio-card">
21210                    <div class="bio-image-section">
21211                        <img src="https://media.echovira.com/syahi/syahi_meera_iyer_female_singer_portrait_1.png" alt="Meera Iyer" class="bio-artist-image"
21212                srcset="https://media.echovira.com/syahi/syahi_meera_iyer_female_singer_portrait_1-400.webp 400w, https://media.echovira.com/syahi/syahi_meera_iyer_female_singer_portrait_1-800.webp 800w, https://media.echovira.com/syahi/syahi_meera_iyer_female_singer_portrait_1-full.webp 1024w"
21213                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
21214                    </div>
21215                    <div class="bio-text-section">
21216                        <div class="bio-artist-title">
21217                            <h1>Meera Iyer</h1>
21218                            <div class="stage-name">"Meera" • 24 साल / years</div>
21219                            <div class="role lang-hi">गायिका</div>
21220                            <div class="role lang-en">Female Singer</div>
21221                        </div>
21222                        <div class="bio-description lang-hi">
21223                            <p>मीरा अय्यर से मिलिए — मीरा, 24, Syahi की नई महिला आवाज़। गर्म, मिट्टी और भारतीय विरासत और एक समकालीन नाड़ी के बीच संतुलित।</p><p>उनकी आत्मीय आवाज़ एक मिट्टी की गर्माहट रखती है जो भारतीय परंपराओं और आधुनिक शैलियों को जोड़ती है। Syahi की प्रमुख गाà
21223¤¯à¤¿à¤•ा के रूप में, मीरा बैंड के ध्वनि पैलेट को आकार देती है और अंतरंग वाक्यांश और विशिष्ट क्षणों के साथ लाइव ऊर्जा को प्रज्वलित करती है।</p><p>उनकी गर्म स्वर, लचीली रेंज और सूक्ष्म वाक्यांश गहरे भावनात्मक चाप बनाते हैं; नियंत्रित गतिशीलता और एक आत्मविश्वास मंच उपस्थिति लोक जड़ों और ऑल्ट-पॉप प्रभाव पर आधारित है।</p>
21224                        </div>
21225                        <div class="bio-description lang-en">
21226                            <p>Meet Meera Iyer — Meera, 24, the new female voice of Syahi. Warm, earthy and poised between Indian heritage and a contemporary pulse.</p><p>Her soulful voice carries an earthy warmth that bridges Indian traditions and modern styles. As Syahi's lead singer, Meera shapes the band's sonic palette and ignites live energy with intimate phrasing and standout moments.</p><p>Her warm timbre, flexible range and nuanced phrasing build deep emotional arcs; controlled dynamics and a confident stage presence draw on folk roots and alt-pop influence.</p>
21227                        </div>
21228                    </div>
21229                </div>
21230            </div>
21231        </div>
21232<div id="bio-naina-verma" class="bio-page">
21233            <div class="bio-header">
21234                <div class="container">
21235                    <a href="#artists" data-action="back" class="back-button lang-hi">← कलाकारों के पास वापस</a>
21236                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
21237                </div>
21238            </div>
21239            
21240            <div class="bio-content">
21241                <div class="bio-card">
21242                    <div class="bio-image-section">
21243                        <img src="https://media.echovira.com/syahi/syahi_naina_verma_composer_lyricist_portrait_2.png" alt="Naina Verma" class="bio-artist-image"
21244                srcset="https://media.echovira.com/syahi/syahi_naina_verma_composer_lyricist_portrait_2-400.webp 400w, https://media.echovira.com/syahi/syahi_naina_verma_composer_lyricist_portrait_2-800.webp 800w, https://media.echovira.com/syahi/syahi_naina_verma_composer_lyricist_portrait_2-full.webp 1024w"
21245                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
21246                    </div>
21247                    <div class="bio-text-section">
21248                        <div class="bio-artist-title">
21249                            <h1>Naina Verma</h1>
21250                            <div class="stage-name">"Naina" • 27 साल / years</div>
21251                            <div class="role lang-hi">संगीतकार और गीतकार</div>
21252                            <div class="role lang-en">Composer & Lyricist</div>
21253                        </div>
21254                        <div class="bio-description lang-hi">
21255                            <p>नैना वर्मा से मिलिए — नैना, 27, Syahi के पीछे संगीतकार और गीतकार। Syahi की काव्यात्मक लेखिका, भावनात्मक अनुनाद के साथ गीतवाद को मिश्रित करती है।</p><p>एक संगीतकार के रूप में वह यादगार आकृतियों, विचारशील सामंजस्यपूर्ण विकल्पों और व्यवस्थाओं के साथ धुनों को तैयार करती है जो प्रत्येक गीत को एक स्पष्ट चाप देते हैं। एक गीतकार के रूप में वह विशद कल्पनà
21255¤¾, अंतरंग कहानी कहने, सावधानीपूर्वक ताल और रेखाओं का पक्ष लेती है जो भावनात्मक रूप से उतरती हैं।</p><p>उनके लेखन और संरचनाएं Syahi की ध्वनि पहचान को आकार देती हैं — वे स्टूडियो बनावट का मार्गदर्शन करते हैं और बैंड की लाइव ऊर्जा और गतिशीलता को ईंधन देते हैं।</p>
21256                        </div>
21257                        <div class="bio-description lang-en">
21258                            <p>Meet Naina Verma — Naina, 27, the composer & lyricist behind Syahi. The poetic writer of Syahi, blending lyricism with emotional resonance.</p><p>As a composer she crafts melodies with memorable motifs, thoughtful harmonic choices, and arrangements that give each song a clear arc. As a lyricist she favors vivid imagery, intimate storytelling, careful cadence, and lines that land emotionally.</p><p>Her writing and structures shape Syahi's sonic identity — they guide the studio textures and fuel the band's live energy and dynamics.</p>
21259                        </div>
21260                    </div>
21261                </div>
21262            </div>
21263        </div>
21264<div id="bio-rohan-kapoor" class="bio-page">
21265            <div class="bio-header">
21266                <div class="container">
21267                    <a href="#artists" data-action="back" class="back-button lang-hi">← कलाकारों के पास वापस</a>
21268                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
21269                </div>
21270            </div>
21271            
21272            <div class="bio-content">
21273                <div class="bio-card">
21274                    <div class="bio-image-section">
21275                        <img src="https://media.echovira.com/syahi/syahi_rohan_kapoor_male_singer_portrait_1.png" alt="Rohan Kapoor" class="bio-artist-image"
21276                srcset="https://media.echovira.com/syahi/syahi_rohan_kapoor_male_singer_portrait_1-400.webp 400w, https://media.echovira.com/syahi/syahi_rohan_kapoor_male_singer_portrait_1-800.webp 800w, https://media.echovira.com/syahi/syahi_rohan_kapoor_male_singer_portrait_1-full.webp 1024w"
21277                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
21278                    </div>
21279                    <div class="bio-text-section">
21280                        <div class="bio-artist-title">
21281                            <h1>Rohan Kapoor</h1>
21282                            <div class="stage-name">"Rohan" • 27 साल / years</div>
21283                            <div class="role lang-hi">गायक</div>
21284                            <div class="role lang-en">Male Singer</div>
21285                        </div>
21286                        <div class="bio-description lang-hi">
21287                            <p>रोहन से मिलिए — रोहन कपूर, 27, Syahi के नए मुख्य गायक। एक गायक जो केंद्रित तीव्रता और एक आदेशात्मक मंच आभा लाता है।</p><p>एक भावुक, आदेशात्मक गायक जिसकी तीव्र वितरण और सटीक नियंत्रण Syahi की ध्वनि को लंगर डालते हैं। उनकी गर्म बैरिटोन स्वर, विस्तृत रेंज, सूक्ष्म वाक्यांश और गतिशील नियंत्रण — रॉक, शास्त्रीय और लोक से प्रभावित — बैंड के मधुर और भावनात्मक पैलेट का विस्तार करते हैं।</p><p>मंच पर उनकी उपस्थिति व्यवस्थाओं को कसती है, crescendos उठाà
21287¤¤à¥€ है और Syahi को एक अधिक आंत लाइव ऊर्जा देती है जो शांत मार्गों और चरम क्षणों दोनों को फिर से आकार देती है।</p>
21288                        </div>
21289                        <div class="bio-description lang-en">
21290                            <p>Meet Rohan — Rohan Kapoor, 27, the new male singer of Syahi. A vocalist who brings focused intensity and a commanding stage aura.</p><p>A passionate, commanding vocalist whose intense delivery and precise control anchor Syahi's sound. His warm baritone timbre, wide range, nuanced phrasing and dynamic control — influenced by rock, classical and folk — expand the band's melodic and emotional palette.</p><p>On stage his presence tightens arrangements, lifts crescendos and gives Syahi a more visceral live energy that reshapes both quiet passages and climactic moments.</p>
21291                        </div>
21292                    </div>
21293                </div>
21294            </div>
21295        </div>
21296<div id="bio-simran-chawla" class="bio-page">
21297            <div class="bio-header">
21298                <div class="container">
21299                    <a href="#artists" data-action="back" class="back-button lang-hi">← कलाकारों के पास वापस</a>
21300                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
21301                </div>
21302            </div>
21303            
21304            <div class="bio-content">
21305                <div class="bio-card">
21306                    <div class="bio-image-section">
21307                        <img src="https://media.echovira.com/syahi/syahi_simran_chawla_multi_instrumentalist_keyboard_guitar_portrait_0.png" alt="Simran Chawla" class="bio-artist-image"
21308                srcset="https://media.echovira.com/syahi/syahi_simran_chawla_multi_instrumentalist_keyboard_guitar_portrait_0-400.webp 400w, https://media.echovira.com/syahi/syahi_simran_chawla_multi_instrumentalist_keyboard_guitar_portrait_0-800.webp 800w, https://media.echovira.com/syahi/syahi_simran_chawla_multi_instrumentalist_keyboard_guitar_portrait_0-full.webp 1024w"
21309                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
21310                    </div>
21311                    <div class="bio-text-section">
21312                        <div class="bio-artist-title">
21313                            <h1>Simran Chawla</h1>
21314                            <div class="stage-name">"Simran" • 24 साल / years</div>
21315                            <div class="role lang-hi">बहु-वाद्यवादक (कीबोर्ड और गिटार)</div>
21316                            <div class="role lang-en">Multi-Instrumentalist (Keyboard & Guitar)</div>
21317                        </div>
21318                        <div class="bio-description lang-hi">
21319                            <p>सिमरन से मिलिए — सिमरन चावला (मंच नाम: सिमरन), 24, Syahi की बहु-वाद्यवादक (कीबोर्ड और गिटार)। चाबियों पर और फ्रेटबोर्ड पर एक नई आवाज़।</p><p>एक निडर संगीतकार जो चाबियों और गिटार के बीच निर्बाध रूप से स्विच करता है, हर प्रदर्शन में केंद्रित, विद्युतीकरण ऊर्जा लाता है।</p><p>चाबियों पर, सिमरन गर्म स्वर, सटीक आवाज और तरल सुधार को आकार देती है जो Syahi के सामंजस्यपूर्ण ढांचे को लंगर डालती है। गिटार पर, वह तंग लय ग्रूव्स, उज्ज्वल लीड लाइनें और हस्ताक्षर रिफ प्रदान करती है जो बैंड की गतिशीलता को चलाते हैं।</p>
21320                        </div>
21321                        <div class="bio-description lang-en">
21322                            <p>Meet Simran — Simran Chawla (stage name: Simran), 24, Multi-Instrumentalist (Keyboard & Guitar) of Syahi. A new voice at the keys and on the fretboard.</p><p>A fearless musician who switches seamlessly between keys and guitar, bringing focused, electrifying energy to every performance.</p><p>On keys, Simran shapes warm tones, precise voicings and fluid improvisation that anchor Syahi's harmonic framework. On guitar, she delivers tight rhythm grooves, bright lead lines and signature riffs that drive the band's dynamics.</p>
21323                        </div>
21324                    </div>
21325                </div>
21326            </div>
21327        </div>
21328<div id="bio-tara-reddy" class="bio-page">
21329            <div class="bio-header">
21330                <div class="container">
21331                    <a href="#artists" data-action="back" class="back-button lang-hi">← कलाकारों के पास वापस</a>
21332                    <a href="#artists" data-action="back" class="back-button lang-en">← Back to Artists</a>
21333                </div>
21334            </div>
21335            
21336            <div class="bio-content">
21337                <div class="bio-card">
21338                    <div class="bio-image-section">
21339                        <img src="https://media.echovira.com/syahi/syahi_tara_reddy_female_singer_portrait_2.png" alt="Tara Reddy" class="bio-artist-image"
21340                srcset="https://media.echovira.com/syahi/syahi_tara_reddy_female_singer_portrait_2-400.webp 400w, https://media.echovira.com/syahi/syahi_tara_reddy_female_singer_portrait_2-800.webp 800w, https://media.echovira.com/syahi/syahi_tara_reddy_female_singer_portrait_2-full.webp 1024w"
21341                sizes="(max-width: 768px) 200px, 280px" width="1024" height="1024" decoding="async">
21342                    </div>
21343                    <div class="bio-text-section">
21344                        <div class="bio-artist-title">
21345                            <h1>Tara Reddy</h1>
21346                            <div class="stage-name">"Tara" • 27 साल / years</div>
21347                            <div class="role lang-hi">गायिका</div>
21348                            <div class="role lang-en">Female Singer</div>
21349                        </div>
21350                        <div class="bio-description lang-hi">
21351                            <p>तारा रेड्डी से मिलिए — तारा (आयु 27), Syahi की नई महिला गायिका। उनकी आवाज़ हमारे गीतों में गहराई और सिनेमाई रंग लाती है।</p><p>एक परिष्कृत स्वर और सिनेमाई मंच उपस्थिति के साथ एक सुंदर गायिका, वह स्पष्टता के साथ हर मेलोडी को आकार देती है। उनका वाक्यांश और सूक्ष्म गतिशीलता Syahi की व्यवस्थाओं को लंगर डालती है, अंतरंग छंदों को व्यापक लाइव क्षणों में बदल देती है।</p><p>उनकी गर्म, चमकदार स्वर, विस्तृत रेंज और अभिव्à
21351¤¯à¤‚जक वाक्यांश — शास्त्रीय और इंडी प्रभावों से सूचित — बैंड को अपनी मधुर पहचान देती है।</p>
21352                        </div>
21353                        <div class="bio-description lang-en">
21354                            <p>Meet Tara Reddy — Tara (age 27), the new female singer of Syahi. Her voice brings depth and cinematic color to our songs.</p><p>A graceful vocalist with a refined tone and cinematic stage presence, she shapes every melody with clarity. Her phrasing and nuanced dynamics anchor Syahi's arrangements, turning intimate verses into sweeping live moments.</p><p>Her warm, luminous timbre, wide range and expressive phrasing — informed by classical and indie influences — give the band its melodic identity.</p>
21355                        </div>
21356                    </div>
21357                </div>
21358            </div>
21359        </div>
21360</div>
21361<footer class="ev-network-footer" style="background:var(--ev-bg,#0d1117);color:var(--ev-fg,#e8e8e8);padding:1.75rem 1rem;text-align:center;border-top:1px solid rgba(128,128,128,0.3);font-size:0.85rem;line-height:2.2">
21362  <nav aria-label="Site pages">
21363    <a href="/about" style="color:inherit;margin:0 0.7rem;text-decoration:underline">About</a>
21364    <a href="/contact" style="color:inherit;margin:0 0.7rem;text-decoration:underline">Contact</a>
21365    <a href="/privacy" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Privacy Policy</a>
21366    <a href="/terms" style="color:inherit;margin:0 0.7rem;text-decoration:underline;white-space:nowrap">Terms of Use</a>
21367  </nav>
21368  <p style="margin:0;opacity:0.75">&copy; EchoVira &middot; <a href="https://echovira.com" style="color:inherit;text-decoration:underline">echovira.com</a></p>
21369</footer>
21370`;e.s(["SyahiEchoviraPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=(0,t.injectFluidCanvas)(a,"#401080","#0d1117",.28);function s(e){document.body.classList.remove("lang-hi","lang-en"),document.body.classList.add("lang-"+e),a.querySelectorAll("[data-lang]").forEach(e=>e.classList.remove("active")),a.querySelector(`[data-lang="${e}"]`)?.classList.add("active")}function r(e){a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display="none"});let i=document.getElementById("bio-"+e);
21370i&&(i.classList.add("active"),window.scrollTo(0,0))}function n(){a.querySelectorAll(".bio-page").forEach(e=>e.classList.remove("active")),a.querySelectorAll(".hero-section, .section, .main-footer").forEach(e=>{e.style.display=""}),window.scrollTo(0,0)}function o(e){let a=e.target,i=a.closest("[data-artist-id]");if(i){e.preventDefault(),r(i.dataset.artistId);return}if(a.closest('[data-action="back"]')){e.preventDefault(),n();return}}window.setLanguage=s,s("hi"),a.querySelector('[data-lang="hi"]')?.addEventListener("click",()=>s("hi")),a.querySelector('[data-lang="en"]')?.addEventListener("click",()=>s("en")),window.showArtistBio=r,window.hideBioPage=n,window.showMainPage=n;let l=document.getElementById("mobileToggle"),c=document.getElementById("navMenu");l&&c&&l.addEventListener("click",()=>c.classList.toggle("active"));let d=()=>document.getElementById("mainNav")?.classList.toggle("scrolled",window.scrollY>100);return a.addEventListener("click",o),window.addEventListener("scroll",d),()=>{i(),a.removeEventListener("click",o),window.removeEventListener("scroll",d),delete window.setLanguage,delete window.showArtistBio,delete window.hideBioPage,delete window.showMainPage}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("a",{href:"#main-content",className:"ev-skip-link",children:"Skip to main content"}),(0,a.jsx)("div",{ref:e,className:"echovira-page-root",dangerouslySetInnerHTML:{__html:(0,r.stripHtmlComments)(n)},suppressHydrationWarning:!0}),(0,a.jsx)(s.EchoviraThemeToggle,{})]})}])},411289,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645);let s="finance-theme",r={"--site-bg":"#0d1117","--site-fg":"#d4d4d4","--site-soft":"#1a1f2e","--site-border":"#2d3148"};function n(e){let a=document.querySelectorAll(".finance-desk-ui"),i=window.matchMedia("(prefers-color-scheme: dark)").matches,t="dark"===e||"auto"===e&&i;a.forEach(a=>{a.removeAttribute("data-fin-theme"),t?(a.setAttribute("data-fin-theme","dark"),Object.entries(r).forEach(([e,i])=>a.style.setProperty(e,i))):("light"===e&&a.setAttribute("data-fin-theme","light"),Object.keys(r).forEach(e=>a.style.removeProperty(e)))})}function o(){let[e,i]=(0,t.useState)("auto");(0,t.useEffect)(()=>{let e=localStorage.getItem(s),a="light"===e||"dark"===e?e:"auto";i(a),n(a);let t=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{"auto"===(localStorage.getItem(s)??"auto")&&n("auto")};return t.addEventListener("change",r),()=>t.removeEventListener("change",r)},[]);let r=(0,t.useCallback)(e=>{i(e),"auto"===e?localStorage.removeItem(s):localStorage.setItem(s,e),n(e)},[]),o=[{value:"auto",label:"Auto (system)",icon:(0,a.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":!0,children:[(0,a.jsx)("circle",{cx:"7",cy:"7",r:"5.5"}),(0,a.jsx)("line",{x1:"7",y1:"1.5",x2:"7",y2:"12.5"}),(0,a.jsx)("path",{d:"M1.5 7h5.5"}),(0,a.jsx)("path",{d:"M4 3.7 7 7l-3 3.3"})]})},{value:"light",label:"Light",icon:(0,a.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":!0,children:[(0,a.jsx)("circle",{cx:"7",cy:"7",r:"2.5"}),(0,a.jsx)("line",{x1:"7",y1:"1",x2:"7",y2:"2.2"}),(0,a.jsx)("line",{x1:"7",y1:"11.8",x2:"7",y2:"13"}),(0,a.jsx)("line",{x1:"1",y1:"7",x2:"2.2",y2:"7"}),(0,a.jsx)("line",{x1:"11.8",y1:"7",x2:"13",y2:"7"}),(0,a.jsx)("line",{x1:"2.75",y1:"2.75",x2:"3.6",y2:"3.6"}),(0,a.jsx)("line",{x1:"10.4",y1:"10.4",x2:"11.25",y2:"11.25"}),(0,a.jsx)("line",{x1:"2.75",y1:"11.25",x2:"3.6",y2:"10.4"}),(0,a.jsx)("line",{x1:"10.4",y1:"3.6",x2:"11.25",y2:"2.75"})]})},{value:"dark",label:"Dark",icon:(0,a.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M12.2 8.2A5.5 5.5 0 1 1 5.8 1.8a4.3 4.3 0 0 0 6.4 6.4z"})})}];return(0,a.jsx)("div",{className:"fin-theme-toggle",role:"group","aria-label":"Color theme",children:o.map(i=>(0,a.jsx)("button",{type:"button",onClick:()=>r(i.value),title:i.label,"aria-label":`Switch to ${i.label} theme`,"aria-pressed":e===i.value,children:i.icon},i.value))})}let l={flagship:"Fenul",planning:"Planning",coastal:"California",analyst:"Operator","planner-ca":"CA Planner",aviation:"Aviation",executive:"C-Level",engineer:"Engineer",counsel:"Counsel",clinical:"Clinical",laboratory:"Research",default:"Desk"},c={flagship:"Integrated intelligence · Scenario tools · Not investment advice",planning:"Financial planning education · Practical calculators · General guidance only",coastal:"California money desk · Planning tools · Not personalized advice",anal
21370yst:"Capital-side intelligence · Scenario models · Not investment advice","planner-ca":"California planning desk · Checklists & tools · Education only",aviation:"Crew-aware finance desk · Career tools · General education only",executive:"Executive wealth desk · Governance frameworks · Educational only",engineer:"Technical professional finance · Assumption-forward models · Not advice",counsel:"Legal professional finance · Ethics-aware frameworks · General education",clinical:"Physician wealth desk · Evidence-first clarity · Not personalized advice",laboratory:"Scientist & researcher finance · Method-transparent tools · Education",default:"Educational content · Client-side calculators · Not investment advice"},d={flagship:{articles:"Deep Dives",tools:"Tools",services:"Pillars"},planning:{articles:"Guides",tools:"Calculators",services:"Planning"},coastal:{articles:"Insights",tools:"Tools",services:"Coverage"},analyst:{articles:"Research",tools:"Models",services:"Desk"},"planner-ca":{articles:"Guides",tools:"Checklists",services:"Services"},aviation:{articles:"Flight Deck",tools:"Tools",services:"Coverage"},executive:{articles:"Intelligence",tools:"Frameworks",services:"Desk"},engineer:{articles:"Lab Notes",tools:"Calculators",services:"Coverage"},counsel:{articles:"Briefs",tools:"Tools",services:"Practice"},clinical:{articles:"Guides",tools:"Calculators",services:"Services"},laboratory:{articles:"Lab Notes",tools:"Models",services:"Desk"},default:{articles:"Articles",tools:"Tools",services:"Coverage"}},h={flagship:[{label:"Compound Growth",slug:"/tools"},{label:"Retirement Planner",slug:"/tools"},{label:"Inflation Impact",slug:"/tools"},{label:"Risk vs. Reward",slug:"/tools"}],planning:[{label:"Retirement Planner",slug:"/tools"},{label:"Compound Growth",slug:"/tools"},{label:"Inflation Impact",slug:"/tools"},{label:"Portfolio Analyzer",slug:"/tools"}],coastal:[{label:"Retirement Planner",slug:"/tools"},{label:"Compound Growth",slug:"/tools"},{label:"Inflation Impact",slug:"/tools"},{label:"Portfolio Analyzer",slug:"/tools"}],analyst:[{label:"Portfolio Analyzer",slug:"/tools"},{label:"Drawdown Recovery",slug:"/tools"},{label:"Risk vs. Reward",slug:"/tools"},{label:"Options P&L",slug:"/tools"}],"planner-ca":[{label:"Retirement Planner",slug:"/tools"},{label:"Inflation Impact",slug:"/tools"},{label:"Compound Growth",slug:"/tools"},{label:"Portfolio Analyzer",slug:"/tools"}],aviation:[{label:"Retirement Planner",slug:"/tools"},{label:"Compound Growth",slug:"/tools"},{label:"Inflation Impact",slug:"/tools"},{label:"Drawdown Recovery",slug:"/tools"}],executive:[{label:"Compound Growth",slug:"/tools"},{label:"Portfolio Analyzer",slug:"/tools"},{label:"Risk vs. Reward",slug:"/tools"},{label:"Options P&L",slug:"/tools"}],engineer:[{label:"Compound Growth",slug:"/tools"},{label:"Retirement Planner",slug:"/tools"},{label:"Risk vs. Reward",slug:"/tools"},{label:"Inflation Impact",slug:"/tools"}],counsel:[{label:"Compound Growth",slug:"/tools"},{label:"Retirement Planner",slug:"/tools"},{label:"Portfolio Analyzer",slug:"/tools"},{label:"Inflation Impact",slug:"/tools"}],clinical:[{label:"Retirement Planner",slug:"/tools"},{label:"Portfolio Analyzer",slug:"/tools"},{label:"Compound Growth",slug:"/tools"},{label:"Drawdown Recovery",slug:"/tools"}],laboratory:[{label:"Compound Growth",slug:"/tools"},{label:"Portfolio Analyzer",slug:"/tools"},{label:"Retirement Planner",slug:"/tools"},{label:"Inflation Impact",slug:"/tools"}],default:[{label:"Compound Growth",slug:"/tools"},{label:"Retirement Planner",slug:"/tools"},{label:"Portfolio Analyzer",slug:"/tools"}]};function m({className:e}){return(0,a.jsx)("svg",{className:e,width:"26",height:"16",viewBox:"0 0 26 16",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,children:(0,a.jsx)("polyline",{points:"1,13 7,7 12,10 17,4 23,1"})})}function p(){return(0,a.jsxs)("svg",{width:"22",height:"22",viewBox:"0 0 22 22",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round","aria-hidden":!0,children:[(0,a.jsx)("line",{x1:"3",y1:"5.5",x2:"19",y2:"5.5"}),(0,a.jsx)("line",{x1:"3",y1:"11",x2:"19",y2:"11"}),(0,a.jsx)("line",{x1:"3",y1:"16.5",x2:"19",y2:"16.5"})]})}function g(){return(0,a.jsxs)("svg",{width:"22",height:"22",viewBox:"0 0 22 22",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round","aria-hidden":!0,
21370children:[(0,a.jsx)("line",{x1:"4",y1:"4",x2:"18",y2:"18"}),(0,a.jsx)("line",{x1:"18",y1:"4",x2:"4",y2:"18"})]})}function v(){return(0,a.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,children:[(0,a.jsx)("rect",{x:"1.5",y:"1.5",width:"11",height:"11",rx:"1.5"}),(0,a.jsx)("line",{x1:"4.5",y1:"4.5",x2:"9.5",y2:"4.5"}),(0,a.jsx)("line",{x1:"4.5",y1:"7",x2:"9.5",y2:"7"}),(0,a.jsx)("line",{x1:"4.5",y1:"9.5",x2:"7",y2:"9.5"})]})}function u(e,a){let i="/"===e?"":e.replace(/\/$/,"");return"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}e.s(["FINANCE_DOMAIN_VARIANTS",0,{"fenul.com":"flagship","fenulwealthmanagement.com":"planning","cafinancialadvisor.com":"coastal","cafinancialadvisor.net":"analyst","financialplannercalifornia.com":"planner-ca","aviationfinancialadvisor.com":"aviation","clevelfinancial.com":"executive","engineerfinancial.com":"engineer","lawyerfinancialadvisor.com":"counsel","medicalfinancialadvisor.com":"clinical","scientistfinancialadvisor.com":"laboratory"},"FinanceHeader",0,function({siteName:e,domain:s,variant:r,navEntries:n,currentSlug:b,siteBasePath:f,showPortfolioLink:x}){let[y,w]=(0,t.useState)(!1),[_,k]=(0,t.useState)(!1);(0,t.useEffect)(()=>{let e=()=>k(window.scrollY>60);return e(),window.addEventListener("scroll",e,{passive:!0}),()=>window.removeEventListener("scroll",e)},[]);let j=d[r],N=new Set(n.map(e=>e.slug)),S=[...N.has("/blog")?[{title:j.articles,slug:"/blog"}]:[],...N.has("/tools")?[{title:j.tools,slug:"/tools"}]:[],...N.has("/services")?[{title:j.services,slug:"/services"}]:[],...N.has("/about")?[{title:"About",slug:"/about"}]:[]],A=N.has("/membership"),z=N.has("/contact"),C=e=>b===e||"/"!==e&&b.startsWith(e+"/");return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"fin-trust-bar",role:"note","aria-label":"Compliance notice",children:(0,a.jsxs)("div",{className:"mx-auto flex max-w-7xl items-center gap-3 px-4 sm:px-6",children:[(0,a.jsx)("span",{className:"fin-trust-prefix hidden sm:inline","aria-hidden":!0,children:l[r]}),(0,a.jsx)("span",{className:"fin-trust-message",children:c[r]}),x&&(0,a.jsx)(i.default,{href:"/",className:"fin-trust-back ml-auto hidden shrink-0 sm:inline",children:"← Portfolio"})]})}),(0,a.jsx)("nav",{className:"fin-quick-tools","aria-label":"Quick calculator tools",children:(0,a.jsx)("div",{className:"fin-quick-tools-inner",children:h[r].map(e=>(0,a.jsxs)(i.default,{href:u(f,e.slug),className:"fin-quick-tool-btn",children:[(0,a.jsx)(v,{}),e.label]},e.label))})}),(0,a.jsx)("header",{className:`fin-header transition-all duration-300${_?" fin-header--scrolled":""}`,role:"banner",children:(0,a.jsxs)("div",{className:"mx-auto flex max-w-7xl items-center gap-3 px-4 sm:px-6",children:[(0,a.jsxs)(i.default,{href:u(f,"/"),className:"fin-brand group mr-4 flex shrink-0 items-center gap-2 py-4","aria-label":`${e} — home`,children:[(0,a.jsx)(m,{className:"fin-brand-spark text-[color:var(--site-accent)] transition-transform duration-300 group-hover:-translate-y-0.5"}),(0,a.jsx)("span",{className:"fin-brand-name",children:e})]}),(0,a.jsx)("nav",{"aria-label":"Primary navigation",className:"hidden flex-1 items-center gap-0.5 md:flex",children:S.map(e=>(0,a.jsx)(i.default,{href:u(f,e.slug),className:"fin-nav-link","data-active":C(e.slug)?"true":void 0,"aria-current":b===e.slug?"page":void 0,children:e.title},e.slug))}),(0,a.jsxs)("div",{className:"ml-auto hidden shrink-0 items-center gap-2 md:flex",children:[A&&(0,a.jsx)(i.default,{href:u(f,"/membership"),className:"fin-member-btn","aria-label":"Become a member — $4.99 per month, removes ads",children:"Member · $4.99"}),z&&(0,a.jsx)(i.default,{href:u(f,"/contact"),className:"fin-advisor-btn",children:"Find Advisor"}),(0,a.jsx)(o,{})]}),(0,a.jsx)("button",{type:"button",className:"fin-menu-toggle ml-auto md:hidden",onClick:()=>w(e=>!e),"aria-expanded":y,"aria-controls":"fin-mobile-menu","aria-label":y?"Close navigation menu":"Open navigation menu",children:y?(0,a.jsx)(g,{}):(0,a.jsx)(p,{})})]})}),y&&(0,a.jsx)("div",{id:"fin-mobile-menu",className:"fin-mobile-overlay",role:"dialog","aria-modal":!0,"aria-label":`${e} navigation`,children:(0,a.jsxs)("div",{className:"fin-mobile-sheet",children:[(0,a.jsx)("p",{className:"fin-mobile-domain",children:s}),(0,a.jsx)("nav",{"aria-label":"Mobile navigation",className:"space-y-1",children:S.map(e=>(0,a.jsxs)(i.default,{href:u(f,e.slug),className:`fin-mobile-nav-link${C(e.slug)?" fin-mobile-nav-link--active":""}`,onClick:()=>w(!1),"aria-current":b===e.slug?"page":void 0,children:[e.title,C(e.slug)&&(0,a.jsx)("span",{className:"ml-auto text-[color:var(--site-accent)]","aria-hidden":!0,
21370children:"·"})]},e.slug))}),(0,a.jsxs)("div",{className:"mt-6 space-y-3",children:[A&&(0,a.jsx)(i.default,{href:u(f,"/membership"),className:"fin-mobile-member-btn",onClick:()=>w(!1),children:"Become a Member · $4.99 / month"}),z&&(0,a.jsx)(i.default,{href:u(f,"/contact"),className:"fin-mobile-advisor-btn",onClick:()=>w(!1),children:"Find a Financial Advisor"}),x&&(0,a.jsx)(i.default,{href:"/",className:"fin-mobile-back-btn",onClick:()=>w(!1),children:"← Back to Portfolio"})]}),(0,a.jsxs)("div",{className:"fin-mobile-theme-row",children:[(0,a.jsx)("span",{className:"fin-mobile-theme-label",children:"Theme"}),(0,a.jsx)(o,{})]}),(0,a.jsx)("p",{className:"fin-mobile-compliance",children:c[r]})]})})]})}],411289)},241803,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645),s=e.i(846932);e.i(116233);var r=e.i(416523),n=e.i(432497);let o={clinical:{heroPhoto:"https://media.medicalfinancialadvisor.com/medicalfinancialadvisor/hero_physician_wealth.webp",heroAlt:"Physician reviewing financial documents at a modern desk",featuredChart:"https://media.medicalfinancialadvisor.com/medicalfinancialadvisor/chart_physician_income_stages.webp",chartAlt:"Physician income by career stage — bar chart",infographic:"https://media.medicalfinancialadvisor.com/medicalfinancialadvisor/infographic_physician_debt_vs_net_worth.webp",infographicAlt:"Physician debt vs net worth — 7-year break-even trajectory",secondChart:"https://media.medicalfinancialadvisor.com/medicalfinancialadvisor/chart_disability_insurance_gap.webp",secondChartAlt:"Physician disability coverage gap — 65% have insufficient protection"},engineer:{heroPhoto:"https://media.engineerfinancial.com/engineerfinancial/hero_stem_equity.webp",heroAlt:"Software engineer at standing desk with equity vesting schedule",featuredChart:"https://media.engineerfinancial.com/engineerfinancial/chart_rsu_vesting_tax_impact.webp",chartAlt:"RSU vesting vs. tax liability — 4-year schedule",infographic:"https://media.engineerfinancial.com/engineerfinancial/infographic_tech_comp_breakdown.webp",infographicAlt:"Total tech compensation anatomy — base, bonus, RSU, 401k, benefits",secondChart:"https://media.engineerfinancial.com/engineerfinancial/chart_401k_compound_growth.webp",secondChartAlt:"401(k) compound growth over 30 years by contribution rate"},aviation:{heroPhoto:"https://media.aviationfinancialadvisor.com/aviationfinancialadvisor/hero_pilot_finance.webp",heroAlt:"Airline captain reviewing financial planning app in airport lounge",featuredChart:"https://media.aviationfinancialadvisor.com/aviationfinancialadvisor/chart_pilot_pay_by_rank.webp",chartAlt:"Commercial pilot salary progression by rank",infographic:"https://media.aviationfinancialadvisor.com/aviationfinancialadvisor/infographic_per_diem_tax_benefit.webp",infographicAlt:"Per diem tax benefit for pilots — up to $4,800/yr in federal savings",secondChart:"https://media.aviationfinancialadvisor.com/aviationfinancialadvisor/chart_retirement_mandatory_age.webp",secondChartAlt:"Pilot financial timeline — mandatory FAA retirement at age 65"},coastal:{heroPhoto:"https://media.cafinancialadvisor.com/cafinancialadvisor_com/hero_ca_advisor.webp",heroAlt:"Financial advisor meeting with California client overlooking city skyline",featuredChart:"https://media.cafinancialadvisor.com/cafinancialadvisor_com/chart_ca_tax_brackets.webp",chartAlt:"California total tax burden by income level",infographic:"https://media.cafinancialadvisor.com/cafinancialadvisor_com/infographic_ca_home_affordability.webp",infographicAlt:"California housing affordability by region and income required",secondChart:"https://media.cafinancialadvisor.com/cafinancialadvisor_com/chart_salt_cap_impact.webp",secondChartAlt:"SALT cap cost to California households by income group"},counsel:{heroPhoto:"https://media.lawyerfinancialadvisor.com/lawyerfinancialadvisor/hero_attorney_wealth.webp",heroAlt:"Attorney reviewing investment portfolio in law firm office",featuredChart:"https://media.lawyerfinancialadvisor.com/lawyerfinancialadvisor/chart_law_school_debt_repayment.webp",chartAlt:"Law school debt repayment strategy comparison",infographic:"https://media.lawyerfinancialadvisor.com/lawyerfinancialadvisor/infographic_partner_track_equity.webp",infographicAlt:"Law firm partnership track — income, equity buy-in, and K-1 tax"},laboratory:{heroPhoto:"https://media.scientistfinancialadvisor.com/scientistfinancialadvisor/hero_researcher_finance.webp",heroAlt:"Research scientist reviewing financial projections next to lab equipment",featuredChart:"https://media.scientistfinancialadvisor.com/scientistfinancialadvisor/chart_pslf_vs_standard_repayment.webp",chartAlt:"PSLF vs standard repayment for academic scie
21370ntists",infographic:"https://media.scientistfinancialadvisor.com/scientistfinancialadvisor/chart_academic_vs_industry_salary.webp",infographicAlt:"Academic vs industry scientist compensation by career stage",secondChart:"https://media.scientistfinancialadvisor.com/scientistfinancialadvisor/infographic_grant_budget_overhead.webp",secondChartAlt:"NIH/NSF grant budget — direct costs vs indirect overhead"},executive:{heroPhoto:"https://media.clevelfinancial.com/clevelfinancial/hero_executive_wealth.webp",heroAlt:"C-suite executive overlooking city skyline at dusk",featuredChart:"https://media.clevelfinancial.com/clevelfinancial/chart_executive_comp_breakdown.webp",chartAlt:"Fortune 500 executive compensation structure",infographic:"https://media.clevelfinancial.com/clevelfinancial/infographic_10b5_plan_explainer.webp",infographicAlt:"10b5-1 plan — 4-step process for compliant insider equity sales",secondChart:"https://media.clevelfinancial.com/clevelfinancial/chart_deferred_comp_tax_arbitrage.webp",secondChartAlt:"Deferred compensation tax arbitrage — $65K in tax alpha"},"planner-ca":{heroPhoto:"https://media.financialplannercalifornia.com/financialplannercalifornia/hero_ca_planning.webp",heroAlt:"Financial planner consulting with California family at kitchen table",featuredChart:"https://media.financialplannercalifornia.com/financialplannercalifornia/chart_retirement_readiness.webp",chartAlt:"California household financial readiness scorecard",infographic:"https://media.financialplannercalifornia.com/financialplannercalifornia/infographic_prop19_inheritance.webp",infographicAlt:"California Prop 19 — parent-child property transfer impact"},analyst:{heroPhoto:"https://media.cafinancialadvisor.net/cafinancialadvisor_net/hero_systems_thinking.webp",heroAlt:"Strategic finance professional with systems thinking framework",featuredChart:"https://media.cafinancialadvisor.net/cafinancialadvisor_net/chart_asset_allocation_efficient_frontier.webp",chartAlt:"Efficient frontier — portfolio risk vs. return",infographic:"https://media.cafinancialadvisor.net/cafinancialadvisor_net/infographic_tax_alpha_levers.webp",infographicAlt:"Tax alpha levers — strategies to reduce portfolio tax drag"},flagship:{heroPhoto:"https://media.fenul.com/fenul/hero_systems_thinking.webp",heroAlt:"Integrated financial planning with systems-based approach",featuredChart:"https://media.fenul.com/fenul/chart_asset_allocation_efficient_frontier.webp",chartAlt:"Portfolio efficient frontier — hypothetical illustration",infographic:"https://media.fenul.com/fenul/infographic_tax_alpha_levers.webp",infographicAlt:"Tax alpha levers — portfolio tax efficiency strategies"}},l={flagship:{colorA:"#b45309",colorB:"#040810",intensity:.25},planning:{colorA:"#16a34a",colorB:"#071209",intensity:.25},coastal:{colorA:"#0284c7",colorB:"#030c1a",intensity:.28},analyst:{colorA:"#4f46e5",colorB:"#0a0816",intensity:.28},"planner-ca":{colorA:"#c2410c",colorB:"#120908",intensity:.25},aviation:{colorA:"#f59e0b",colorB:"#06070f",intensity:.28},executive:{colorA:"#9f1239",colorB:"#0c080e",intensity:.25},counsel:{colorA:"#ca8a04",colorB:"#080c10",intensity:.25},clinical:{colorA:"#0d9488",colorB:"#030e0d",intensity:.28},laboratory:{colorA:"#7c3aed",colorB:"#0b0712",intensity:.28},engineer:{colorA:"#2dd4bf",colorB:"#060d10",intensity:.28}},c={clinical:{badge:"Physician & Clinician Wealth Desk",headlineFallback:"Wealth without hype.",subheadlineFallback:"Contracts, insurance, and investing — tuned to medical timelines and liability realities.",stats:[{figure:"$300K+",label:"Avg. med school debt"},{figure:"43%",label:"Physicians feel behind on retirement"},{figure:"15%",label:"Physician disability rate"}],salaryLabel:"Attending Annual Salary",salaryPlaceholder:28e4,credentialChips:["Evidence-First","Sources Cited","Not Personalized Advice"],ctaPrimaryLabel:"Open Tools",ctaPrimarySlug:"/tools",ctaSecondaryLabel:"Read the Desk",ctaSecondarySlug:"/blog"},engineer:{badge:"STEM & Engineering Finance Desk",headlineFallback:"Financial engineering for technical careers.",subheadlineFallback:"RSU math, equity scenarios, and STEM-specific tax strategy — assumption-forward, not advice.",stats:[{figure:"$148K",label:"Median tech salary (BLS 2024)"},{figure:"4-yr",label:"Typical RSU vesting schedule"},{figure:"60%",label:"Engineers underestimate equity tax"}],salaryLabel:"STEM / Tech Salary",salaryPlaceholder:165e3,credentialChips:["Assumption-Forward Models","Sources Cited","Not Investment Advice"],ctaPrimaryLabel:"Open Tools",ctaPrimarySlug:"/tools",ctaSecondaryLabel:"Lab Notes",ctaSecondarySlug:"/blog"},aviation:{badge:"Aviation Finance Desk",headlineFallback:"Finance built for the cockpit life.",subheadlineFallback:"Per diem, crew pay, and retirement — calibrated to how pilots actually earn.",stats:[{figure:"$67.50",label:"Max untaxed per diem/day (IRS 2025)"},{figure:"25–30yr",label:"Average pilot career span"},{figure:"401k",label:"Match often left unclaimed"}],salaryLabel:"Captain / FO Annual Pay",salaryPlaceholder:19e4,credentialChips:["Crew-Aware Framing","Regulation-Referenced","General Education Only"],ctaPrimaryLabel:"Open Tools",ctaPrimarySlug:"/tools",ctaSecondaryLabel:"Flight Deck",ctaSecondarySlug:"/blog"},executive:{badge:"C-Suite & Executive Wealth Desk",headlineFallback:"Wealth intelligence for the C-suite.",subheadlineFallback:"Equity frameworks, deferred compensation, and board-aware planning tools.",stats:[{figure:"40%+",label:"C-suite comp in equity on average"},{figure:"LTIP",label:"Vesting timing is a tax event"},{figure:"$10M+",label:"Estate exposure threshold common"}],salaryLabel:"Executive Base + Bonus",salaryPlaceholder:5e5,credentialChips:["Governance-Aware Framing","Not Tax Advice","Consult Your Counsel"],ctaPrimaryLabel:"Open Frameworks",ctaPrimarySlug:"/tools",ctaSecondaryLabel:"Intelligence",ctaSecondarySlug:"/blog"},counsel:{badge:"Legal Professional Finance Desk",headlineFallback:"Practice economics for legal careers.",subheadlineFallback:"Student loans, partner-track math, and ethics-aware financial tools for attorneys.",stats:[{figure:"$140K",label:"Avg. law school debt (ABA 2024)"},{figure:"8–10yr",label:"Typical partnership track"},{figure:"IDR",label:"Income-driven repayment paths matter"}],salaryLabel:"Attorney Annual Salary",salaryPlaceholder:18e4,credentialChips:["Ethics-Aware Framing","Not Legal Advice","General Education Only"],ctaPrimaryLabel:"Open Tools",ctaPrimarySlug:"/tools",ctaSecondaryLabel:"Legal Briefs",ctaSecondarySlug:"/blog"},laboratory:{badge:"Research & Scientist Finance Desk",headlineFallback:"Method-trans
21370parent finance for researchers.",subheadlineFallback:"Grant budgeting, PSLF strategy, and academic wealth — every source cited.",stats:[{figure:"$55K",label:"Avg. postdoc stipend (NIH)"},{figure:"PSLF",label:"10-yr forgiveness track for academics"},{figure:"R01",label:"Grant overhead deductions matter"}],salaryLabel:"Academic / Research Salary",salaryPlaceholder:85e3,credentialChips:["Method-Transparent","Sources Cited","Not Personalized Advice"],ctaPrimaryLabel:"Open Models",ctaPrimarySlug:"/tools",ctaSecondaryLabel:"Lab Notes",ctaSecondarySlug:"/blog"},coastal:{badge:"California Financial Advisory Desk",headlineFallback:"California money, California clarity.",subheadlineFallback:"CA tax tools, advisor matching, and home affordability — specific to your state.",stats:[{figure:"13.3%",label:"CA top marginal income tax rate"},{figure:"$800K+",label:"CA median home price (Zillow 2025)"},{figure:"SALT",label:"Cap hits Californians hardest"}],salaryLabel:"California Gross Income",salaryPlaceholder:12e4,credentialChips:["CA-Context Focus","Not Personalized Advice","Verify with a CPA"],ctaPrimaryLabel:"Open Tools",ctaPrimarySlug:"/tools",ctaSecondaryLabel:"CA Insights",ctaSecondarySlug:"/blog"},analyst:{badge:"Capital Intelligence Desk",headlineFallback:"Operator-grade capital intelligence.",subheadlineFallback:"Portfolio scenarios, factor exposure, and capital-side models — not product pitches.",stats:[{figure:"90%",label:"Returns driven by asset allocation (Brinson)"},{figure:"0.35%",label:"Avg. annual rebalancing alpha"},{figure:"HHI",label:"Institutional concentration metric"}],salaryLabel:"Annual Income",salaryPlaceholder:2e5,credentialChips:["Operator-Grade Models","Not Investment Advice","Hypothetical Scenarios"],ctaPrimaryLabel:"Open Models",ctaPrimarySlug:"/tools",ctaSecondaryLabel:"Research",ctaSecondarySlug:"/blog"},"planner-ca":{badge:"California Financial Planning Desk",headlineFallback:"California f
21370inancial planning, organized.",subheadlineFallback:"Checklists, fee-only guides, and CA-specific retirement and tax tools.",stats:[{figure:"None",label:"CA has no state estate tax"},{figure:"13.3%",label:"CA top marginal income tax rate"},{figure:"Prop 19",label:"Changed parent-child property transfers"}],salaryLabel:"California Gross Income",salaryPlaceholder:11e4,credentialChips:["CA-Specific Framing","Education Only","Consult a Licensed Planner"],ctaPrimaryLabel:"Open Checklists",ctaPrimarySlug:"/tools",ctaSecondaryLabel:"Planning Guides",ctaSecondarySlug:"/blog"},flagship:{badge:"Fenul — Integrated Financial Intelligence",headlineFallback:"Think in systems. Build wealth intentionally.",subheadlineFallback:"Scenario tools, equity math, and financial education for professionals who think in systems.",stats:[{figure:"90%",label:"Wealth outcomes driven by behavior"},{figure:"Compounding",label:"Starts with the first dollar"},{figure:"Tax alpha",label:"Biggest lever most investors ignore"}],salaryLabel:"Annual Income",salaryPlaceholder:15e4,credentialChips:["Systems Thinking","Scenario Tools","Not Investment Advice"],ctaPrimaryLabel:"Open Tools",ctaPrimarySlug:"/tools",ctaSecondaryLabel:"Deep Dives",ctaSecondarySlug:"/blog"},planning:{badge:"Financial Planning Education Desk",headlineFallback:"Practical planning for real financial lives.",subheadlineFallback:"Retirement roadmaps, budget tools, and estate basics — practical education, not advice.",stats:[{figure:"3–6mo",label:"Emergency fund target (consensus)"},{figure:"15%+",label:"Retirement savings rate rule of thumb"},{figure:"Roth",label:"vs. Traditional — context is everything"}],salaryLabel:"Annual Gross Income",salaryPlaceholder:95e3,credentialChips:["Practical Tools","General Education","Not Personalized Advice"],ctaPrimaryLabel:"Open Calculators",ctaPrimarySlug:"/tools",ctaSecondaryLabel:"Planning Guides",ctaSecondarySlug:"/blog"},default:{badge:"Finance Education Desk",headlineFallback:"Financial tools and education.",subheadlineFallback:"Calculators, guides, and scenario tools — for educational purposes only.",stats:[{figure:"Tools",label:"Run scenarios before you decide"},{figure:"Guides",label:"Evidence-based educational content"},{figure:"Advisors",label:"Match with a fiduciary professional"}],salaryLabel:"Annual Gross Income",salaryPlaceholder:1e5,credentialChips:["Educational Content","Not Financial Advice","Tools Only"],ctaPrimaryLabel:"Open Tools",ctaPrimarySlug:"/tools",ctaSecondaryLabel:"Read Articles",ctaSecondarySlug:"/blog"}},d=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:0}),h={net:"#10b981",federal:"#3b82f6",fica:"#f59e0b",state:"#8b5cf6"};function m({breakdown:e,grossIncome:i}){let t=Math.max(i,1),s=[{key:"net",value:e.net,label:"Net Take-Home"},{key:"federal",value:e.federal,label:"Federal Tax"},{key:"fica",value:e.fica,label:"FICA / Medicare"},{key:"state",value:e.state,label:"State Tax"}].filter(e=>e.value>0),r=2*Math.PI*70,n=0,o=s.map(e=>{let a=e.value/t,i=r*(1-n)+.25*r;return n+=a,{...e,color:h[e.key],dashLen:a*r,offset:i}}),l=Math.round(e.net/t*100);return(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"relative mx-auto",style:{width:192,height:192},children:(0,a.jsxs)("svg",{width:"192",height:"192",viewBox:"0 0 192 192","aria-label":`Net take-home: ${d.format(e.net)}, ${l}% of gross`,role:"img",children:[(0,a.jsx)("circle",{cx:96,cy:96,r:70,fill:"none",stroke:"currentColor",strokeWidth:19,strokeOpacity:"0.08"}),o.map(e=>(0,a.jsx)("circle",{cx:96,cy:96,r:70,fill:"none",stroke:e.color,strokeWidth:19,strokeDasharray:`${e.dashLen} ${r-e.dashLen}`,strokeDashoffset:e.offset,strokeLinecap:"butt",style:{transition:"stroke-dasharray 0.4s ease, stroke-dashoffset 0.4s ease"}},e.key)),(0,a.jsx)("text",{x:96,y:86,textAnchor:"middle",style:{fontSize:14,fontWeight:700,fill:"currentColor",fontFamily:"inherit"},children:d.format(e.net)}),(0,a.jsx)("text",{x:96,y:102,textAnchor:"middle",style:{fontSize:9.5,fill:"currentColor",opacity:.55,fontFamily:"inherit"},children:"take-home / yr"}),(0,a.jsxs)("text",{x:96,y:116,textAnchor:"middle",style:{fontSize:9,fill:"
21370currentColor",opacity:.4,fontFamily:"inherit"},children:[l,"% of gross"]})]})}),(0,a.jsx)("div",{className:"mt-3 grid grid-cols-2 gap-x-3 gap-y-1.5",children:o.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-xs",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"h-2 w-2 flex-shrink-0 rounded-full",style:{background:e.color}}),(0,a.jsx)("span",{className:"opacity-65",children:e.label})]},e.key))})]})}function p({salaryLabel:e,defaultSalary:i}){let[s,r]=(0,t.useState)(i),[n,o]=(0,t.useState)("single"),[l,c]=(0,t.useState)("CA"),g=(0,t.useMemo)(()=>(function(e,a,i){if(!e||e<=0)return{federal:0,state:0,fica:0,net:0};let t=Math.min(e,5e6),s=0,r=Math.max(0,t-("mfj"===a?3e4:15e3));for(let[e,i]of"single"===a?[[11600,.1],[35550,.12],[53375,.22],[91425,.24],[51775,.32],[365625,.35],[1/0,.37]]:[[23200,.1],[71100,.12],[106750,.22],[182850,.24],[103550,.32],[243750,.35],[1/0,.37]]){if(r<=0)break;let a=Math.min(r,e);s+=a*i,r-=a}let n=Math.round(.062*Math.min(t,176100)+.0145*t+(t>2e5?(t-2e5)*.009:0)),o=Math.round(t*("CA"===i?t<8e4?.04:t<2e5?.068:t<4e5?.088:.105:"NY"===i?t<8e4?.04:t<2e5?.057:.068:.04*("TX_FL"!==i))),l=Math.max(0,t-(s=Math.round(s))-n-o);return{federal:s,state:o,fica:n,net:l}})(s,n,l),[s,n,l]),v=s>0?Math.round((s-g.net)/s*100):0,u="mt-1.5 w-full rounded-xl border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-bg)_65%,transparent)] px-3 py-2.5 text-sm outline-none focus:border-[color:var(--site-accent)]";return(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)("div",{className:"flex justify-center py-1",children:(0,a.jsx)(m,{breakdown:g,grossIncome:s||i})}),(0,a.jsxs)("div",{className:"rounded-2xl border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-bg)_45%,transparent)] p-4 space-y-3.5 backdrop-blur-sm",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[11px] font-semibold uppercase tracking-[0.15em] opacity-55",children:e}),(0,a.jsxs)("div",{className:"mt-1.5 flex items-center gap-1.5 rounded-xl border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-bg)_65%,transparent)] px-3 py-2.5 focus-within:border-[color:var(--site-accent)]",children:[(0,a.jsx)("span",{className:"text-sm opacity-40",children:"$"}),(0,a.jsx)("input",{type:"number",min:0,max:5e6,step:5e3,value:s,onChange:e=>r(Math.max(0,parseInt(e.target.value)||0)),className:"w-full bg-transparent text-sm outline-none tabular-nums","aria-label":e})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{htmlFor:"fin-hero-filing",className:"block text-[11px] font-semibold uppercase tracking-[0.15em] opacity-55",children:"Filing"}),(0,a.jsxs)("select",{id:"fin-hero-filing",value:n,onChange:e=>o(e.target.value),className:u,children:[(0,a.jsx)("option",{value:"single",children:"Single"}),(0,a.jsx)("option",{value:"mfj",children:"Married (MFJ)"})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{htmlFor:"fin-hero-state",className:"block text-[11px] font-semibold uppercase tracking-[0.15em] opacity-55",children:"State"}),(0,a.jsxs)("select",{id:"fin-hero-state",value:l,onChange:e=>c(e.target.value),className:u,children:[(0,a.jsx)("option",{value:"CA",children:"California"}),(0,a.jsx)("option",{value:"NY",children:"New York"}),(0,a.jsx)("option",{value:"TX_FL",children:"Texas / Florida"}),(0,a.jsx)("option",{value:"other",children:"Other (~4%)"})]})]})]})]}),(0,a.jsx)("div",{className:"grid grid-cols-4 gap-1.5 text-center text-xs",children:[{label:"Federal",value:d.format(g.federal),color:h.federal},{label:"State",value:d.format(g.state),color:h.state},{label:"FICA",value:d.format(g.fica),color:h.fica},{label:"Eff. Rate",value:`${v}%`,color:h.net}].map(e=>(0,a.jsxs)("div",{className:"rounded-xl border border-[color:var(--site-border)] py-2.5 px-1",children:[(0,a.jsx)("p",{className:"font-semibold tabular-nums leading-none",style:{color:e.color},children:e.value}),(0,a.jsx)("p",{className:"mt-1 opacity-50 leading-none",children:e.label})]},e.label))}),(0,a.jsx)("p",{className:"text-[10px] leading-relaxed opacity-35",children:"Illustrative estimate only — not tax advice. Uses simplified 2025 federal brackets and estimated state effective rates. Verify with a licensed CPA or tax professional."})]})}function g(e,a){let i="/"===e?"":e.replace(/\/$/,"");return"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}function v(){return(0,a.jsxs)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none","aria-hidden":!0,
21370children:[(0,a.jsx)("circle",{cx:"5",cy:"5",r:"4.5",stroke:"currentColor",strokeWidth:"1"}),(0,a.jsx)("path",{d:"M3 5L4.5 6.5L7 3.5",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})]})}function u({variant:e,siteBasePath:t,heroBlock:r}){let d=c[e]??c.default,h=o[e]??null,m=l[e],b=r?.title?.trim()||d.headlineFallback,f=r?.body?.trim()||d.subheadlineFallback,x=r?.primaryCta?g(t,r.primaryCta.href):g(t,d.ctaPrimarySlug),y=r?.primaryCta?.label??d.ctaPrimaryLabel,w=r?.secondaryCta?g(t,r.secondaryCta.href):g(t,d.ctaSecondarySlug),_=r?.secondaryCta?.label??d.ctaSecondaryLabel;return(0,a.jsxs)("section",{className:"fin-hero-band fin-site-hero fin-hero-dark fin-hero-flagship","aria-label":"Site overview and income estimator",children:[(0,a.jsx)(n.FluidCanvas,{colorA:m.colorA,colorB:m.colorB,intensity:m.intensity,className:"absolute inset-0 z-0"}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0 opacity-[0.055]",style:{backgroundImage:"radial-gradient(circle, #b45309 1.5px, transparent 1.5px)",backgroundSize:"28px 28px"}}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 55% 70% at 5% 45%, rgba(180,83,9,0.24) 0%, transparent 65%)"}}),(0,a.jsx)(s.motion.div,{className:"pointer-events-none absolute left-[32%] top-[28%] z-0 h-80 w-80 rounded-full",style:{background:"radial-gradient(circle, rgba(180,83,9,0.10) 0%, transparent 70%)",filter:"blur(44px)"},animate:{scale:[1,1.38,1],opacity:[.42,.72,.42]},transition:{duration:11,repeat:1/0,ease:"easeInOut"}}),(0,a.jsxs)("div",{className:"relative z-[1] mx-auto max-w-7xl px-4 sm:px-6 py-[clamp(4rem,9vw,7rem)]",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-0 lg:flex-row lg:items-stretch",children:[(0,a.jsx)("div",{className:"flex flex-col justify-center gap-0 border-r border-[color:color-mix(in_srgb,var(--site-accent)_30%,transparent)] pr-10 mr-10 lg:w-[280px] lg:flex-shrink-0",style:{perspective:"900px"},children:d.stats.map((e,i)=>(0,a.jsxs)(s.motion.div,{className:`py-7 ${i<d.stats.length-1?"border-b border-[color:color-mix(in_srgb,var(--site-border)_50%,transparent)]":""}`,initial:{opacity:0,x:-28,rotateY:-18},animate:{opacity:1,x:0,rotateY:0},transition:{duration:.65,delay:.1+.12*i,ease:[.16,1,.3,1]},whileHover:{rotateY:14,x:6,transition:{duration:.28}},style:{transformStyle:"preserve-3d"},children:[(0,a.jsx)("p",{className:"text-[2.8rem] font-black tabular-nums leading-none tracking-tight",style:{color:"var(--site-accent)",textShadow:"0 0 28px rgba(180,83,9,0.55), 0 2px 8px rgba(0,0,0,0.4)"},children:e.figure}),(0,a.jsx)("p",{className:"mt-2 text-[11px] uppercase tracking-[0.18em] opacity-50",children:e.label})]},e.label))}),(0,a.jsxs)("div",{className:"flex flex-1 flex-col justify-center space-y-7 lg:py-4",children:[(0,a.jsx)(s.motion.span,{className:"fin-site-hero-badge inline-flex items-center rounded-full border border-[color:color-mix(in_srgb,var(--site-accent)_40%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-accent)_10%,var(--site-bg))] px-3.5 py-1.5 text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)] w-fit",initial:{opacity:0,y:-10},animate:{opacity:1,y:0},transition:{duration:.5},style:{boxShadow:"0 0 22px rgba(180,83,9,0.20)"},children:d.badge}),(0,a.jsx)(s.motion.h1,{className:"fin-hero-title",initial:{opacity:0,y:16},animate:{opacity:1,y:0},transition:{duration:.55,delay:.08},children:b}),(0,a.jsx)("p",{className:"fin-hero-body max-w-[520px]",children:f}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:d.credentialChips.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_45%,transparent)] px-2.5 py-1 text-[10.5px] font-medium opacity-70",children:[(0,a.jsx)(v,{}),e]},e))}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,a.jsx)(i.default,{href:x,className:"fin-site-hero-cta-primary shimmer-btn",children:y}),(0,a.jsxs)(i.default,{href:w,className:"fin-site-hero-cta-secondary",children:[_," →"]})]})]})]}),(0,a.jsxs)("div",{className:"mt-12 border-t border-[color:color-mix(in_srgb,var(--site-accent)_22%,var(--site-border))] pt-10 flex flex-col lg:flex-row gap-6 items-start",children:[(0,a.jsxs)(s.motion.div,{className:"w-full lg:w-[460px] lg:flex-shrink-0 fin-site-hero-calc-card rounded-[1.75rem] p-5",style:{background:"color-mix(in srgb, var(--site-bg) 52%, transparent)",backdropFilter:"blur(24px)",WebkitBackdropFilter:"blur(24px)",border:"1px solid color-mix(in srgb, var(--site-accent) 22%, var(--site-border))",boxShadow:"0 24px 60px -28px rgba(0,0,0,0.35), 0 0 40px -18px rgba(180,83,9,0.14)"},whileHover:{y:-4,transition:{duration:.3}},children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:"Net Pay Estimator"}),(0,a.jsx)("span",{className:"rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_50%,transparent)] px-2 py-0.5 text-[9.5px] font-medium opacity-50",children:"Illustrative"})]}),(0,a.jsx)(p,{salaryLabel:d.salaryLabel,defaultSalary:d.salaryPlaceholder})]}),h?.featuredChart&&(0,a.jsxs)(s.motion.div,{className:"flex-1 overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white",style:{boxShadow:"0 8px 32px -12px rgba(0,0,0,0.14)"},whileHover:{scale:1.015,y:-4,transition:{duration:.3}},children:[(0,a.jsx)("img",{src:h.featuredChart,alt:h.chartAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.chartAlt," — Illustrative. Not financial advice."]})})]})]})]})]})}function b({variant:e,siteBasePath:t,heroBlock:r}
21370){let d=c[e]??c.default,h=o[e]??null,m=l[e],u=r?.title?.trim()||d.headlineFallback,f=r?.body?.trim()||d.subheadlineFallback,x=r?.primaryCta?g(t,r.primaryCta.href):g(t,d.ctaPrimarySlug),y=r?.primaryCta?.label??d.ctaPrimaryLabel,w=r?.secondaryCta?g(t,r.secondaryCta.href):g(t,d.ctaSecondarySlug),_=r?.secondaryCta?.label??d.ctaSecondaryLabel;return(0,a.jsxs)("section",{className:"fin-hero-band fin-site-hero fin-hero-dark fin-hero-analyst","aria-label":"Site overview and income estimator",children:[(0,a.jsx)(n.FluidCanvas,{colorA:m.colorA,colorB:m.colorB,intensity:m.intensity,className:"absolute inset-0 z-0"}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0 opacity-[0.045]",style:{backgroundImage:"url(\"data:image/svg+xml,%3Csvg width='60' height='52' viewBox='0 0 60 52' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 26L15 0h30l15 26L45 52H15z' fill='none' stroke='%234f46e5' stroke-width='1'/%3E%3C/svg%3E\")",backgroundSize:"60px 52px"}}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0 opacity-[0.022]",style:{backgroundImage:"repeating-linear-gradient(0deg, rgba(79,70,229,0.8) 0px, rgba(79,70,229,0.8) 1px, transparent 1px, transparent 4px)"}}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 65% 45% at 50% 0%, rgba(79,70,229,0.20) 0%, transparent 65%)"}}),(0,a.jsx)(s.motion.div,{className:"pointer-events-none absolute right-[8%] top-[30%] z-0 h-80 w-80 rounded-full",style:{background:"radial-gradient(circle, rgba(79,70,229,0.11) 0%, transparent 70%)",filter:"blur(44px)"},animate:{scale:[1,1.32,1],opacity:[.38,.65,.38]},transition:{duration:12,repeat:1/0,ease:"easeInOut"}}),(0,a.jsxs)("div",{className:"relative z-[1] mx-auto max-w-7xl px-4 sm:px-6 py-[clamp(4rem,9vw,7rem)]",children:[(0,a.jsx)("div",{className:"mb-10 border-b border-[color:color-mix(in_srgb,var(--site-accent)_25%,transparent)] pb-10",children:(0,a.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-6",children:[(0,a.jsxs)("div",{className:"max-w-[65%]",children:[(0,a.jsx)(s.motion.span,{className:"fin-site-hero-badge inline-flex items-center rounded-full border border-[color:color-mix(in_srgb,var(--site-accent)_40%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-accent)_10%,var(--site-bg))] px-3.5 py-1.5 text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)] mb-5 block w-fit",initial:{opacity:0}
21370,animate:{opacity:1},transition:{duration:.4},style:{boxShadow:"0 0 18px rgba(79,70,229,0.18)"},children:d.badge}),(0,a.jsx)(s.motion.h1,{className:"fin-hero-title fin-hero-title--xl",initial:{opacity:0,y:14},animate:{opacity:1,y:0},transition:{duration:.55,delay:.07},children:u})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-4 items-end",children:[(0,a.jsx)("p",{className:"fin-hero-body max-w-[320px] text-right",children:f}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3 justify-end",children:[(0,a.jsx)(i.default,{href:x,className:"fin-site-hero-cta-primary shimmer-btn",children:y}),(0,a.jsxs)(i.default,{href:w,className:"fin-site-hero-cta-secondary",children:[_," →"]})]})]})]})}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-6 lg:grid-cols-3 lg:items-start",children:[(0,a.jsxs)("div",{className:"space-y-4",children:[d.stats.map((e,i)=>(0,a.jsxs)(s.motion.div,{className:"rounded-xl border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_20%,transparent)] px-4 py-4 font-mono",style:{backdropFilter:"blur(12px)",WebkitBackdropFilter:"blur(12px)",boxShadow:"inset 0 1px 0 rgba(255,255,255,0.04)"},initial:{opacity:0,x:-16},animate:{opacity:1,x:0},transition:{duration:.4,delay:.08+.07*i},whileHover:{scale:1.03,rotateY:8,transition:{duration:.25}},children:[(0,a.jsxs)("p",{className:"text-[0.65rem] uppercase tracking-[0.2em] opacity-40 mb-1",children:["[",String(i+1).padStart(2,"0"),"]"]}),(0,a.jsx)("p",{className:"text-[1.5rem] font-bold tabular-nums leading-none",style:{color:"var(--site-accent)",textShadow:"0 0 20px rgba(79,70,229,0.65), 0 0 6px rgba(79,70,229,0.4)"},children:e.figure}),(0,a.jsx)("p",{className:"mt-1.5 text-[11px] leading-snug opacity-55",children:e.label})]},e.label)),(0,a.jsx)("div",{className:"flex flex-wrap gap-2 pt-2",children:d.credentialChips.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_45%,transparent)] px-2.5 py-1 text-[10.5px] font-medium opacity-70",children:[(0,a.jsx)(v,{}),e]},e))})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[h?.featuredChart&&(0,a.jsxs)(s.motion.div,{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.14)]",whileHover:{scale:1.015,transition:{duration:.3}},children:[(0,a.jsx)("img",{src:h.featuredChart,alt:h.chartAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.chartAlt," — Illustrative. Not financial advice."]})})]}),h?.infographic&&(0,a.jsxs)(s.motion.div,{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",whileHover:{scale:1.015,transition:{duration:.3}},children:[(0,a.jsx)("img",{src:h.infographic,alt:h.infographicAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.infographicAlt," — Illustrative."]})})]})]}),(0,a.jsxs)(s.motion.div,{className:"fin-site-hero-calc-card rounded-[1.75rem] p-5",style:{background:"color-mix(in srgb, var(--site-bg) 50%, transparent)",backdropFilter:"blur(24px)",WebkitBackdropFilter:"blur(24px)",border:"1px solid color-mix(in srgb, var(--site-accent) 22%, var(--site-border))",boxShadow:"0 24px 60px -28px rgba(0,0,0,0.32), 0 0 40px -18px rgba(79,70,229,0.14)"},whileHover:{y:-4,transition:{duration:.3}},children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:"Net Pay Estimator"}),(0,a.jsx)("span",{className:"rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_50%,transparent)] px-2 py-0.5 text-[9.5px] font-medium opacity-50",children:"Illustrative"})]}),(0,a.jsx)(p,{salaryLabel:d.salaryLabel,defaultSalary:d.salaryPlaceholder})]})]})]})]})}function f({variant:e,siteBasePath:t,heroBlock:r}
21370){let d=c[e]??c.default,h=o[e]??null,m=l[e],u=r?.title?.trim()||d.headlineFallback,b=r?.body?.trim()||d.subheadlineFallback,x=r?.primaryCta?g(t,r.primaryCta.href):g(t,d.ctaPrimarySlug),y=r?.primaryCta?.label??d.ctaPrimaryLabel,w=r?.secondaryCta?g(t,r.secondaryCta.href):g(t,d.ctaSecondarySlug),_=r?.secondaryCta?.label??d.ctaSecondaryLabel;return(0,a.jsxs)("section",{className:"fin-hero-band fin-site-hero fin-hero-dark fin-hero-planning","aria-label":"Site overview and income estimator",children:[(0,a.jsx)(n.FluidCanvas,{colorA:m.colorA,colorB:m.colorB,intensity:m.intensity,className:"absolute inset-0 z-0"}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0 opacity-[0.04]",style:{backgroundImage:"repeating-linear-gradient(-45deg, #16a34a 0px, #16a34a 1px, transparent 1px, transparent 12px)",backgroundSize:"17px 17px"}}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 70% 55% at 50% 30%, rgba(22,163,74,0.18) 0%, transparent 65%)"}}),(0,a.jsx)(s.motion.div,{className:"pointer-events-none absolute left-[10%] bottom-[20%] z-0 h-64 w-64 rounded-full",style:{background:"radial-gradient(circle, rgba(22,163,74,0.11) 0%, transparent 70%)",filter:"blur(44px)"},animate:{scale:[1,1.4,1],opacity:[.4,.7,.4]},transition:{duration:10,repeat:1/0,ease:"easeInOut"}}),(0,a.jsxs)("div",{className:"relative z-[1] mx-auto max-w-5xl px-4 sm:px-6 py-[clamp(4rem,9vw,7rem)] text-center",children:[(0,a.jsx)(s.motion.span,{className:"fin-site-hero-badge inline-flex items-center rounded-full border border-[color:color-mix(in_srgb,var(--site-accent)_40%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-accent)_10%,var(--site-bg))] px-3.5 py-1.5 text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)] mb-7",initial:{opacity:0,y:-10},animate:{opacity:1,y:0},transition:{duration:.5},style:{boxShadow:"0 0 20px rgba(22,163,74,0.18)"},children:d.badge}),(0,a.jsx)(s.motion.h1,{className:"fin-hero-title",initial:{opacity:0,y:14},animate:{opacity:1,y:0},transition:{duration:.55,delay:.06},children:u}),(0,a.jsx)("p",{className:"fin-hero-body mx-auto mt-5 max-w-[580px]",children:b}),(0,a.jsx)("div",{className:"mt-12 flex flex-col sm:flex-row items-center justify-center gap-0",children:d.stats.map((e,i)=>(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsxs)(s.motion.div,{className:"flex flex-col items-center gap-3 px-6",initial:{opacity:0,y:24},animate:{opacity:1,y:0},transition:{duration:.55,delay:.1+.13*i},whileHover:{scale:1.05,transition:{duration:.25}},children:[(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(s.motion.div,{className:"absolute inset-[-8px] rounded-full border border-[color:var(--site-accent)]",style:{opacity:.4},animate:{scale:[1,1.35,1],opacity:[.4,0,.4]},transition:{duration:2.5,repeat:1/0,ease:"easeInOut",delay:.4*i}}),(0,a.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-full border-2 border-[color:var(--site-accent)] font-bold text-[1rem] text-[color:var(--site-accent-text)]",style:{background:"color-mix(in srgb, var(--site-accent) 14%, var(--site-bg))",boxShadow:"0 0 20px rgba(22,163,74,0.35), 0 0 6px rgba(22,163,74,0.2)"},children:i+1})]}),(0,a.jsx)("p",{className:"text-[1.35rem] font-bold tabular-nums leading-none",style:{color:"var(--site-accent)",textShadow:"0 0 20px rgba(22,163,74,0.45)"},children:e.figure}),(0,a.jsx)("p",{className:"text-[11px] opacity-55 text-center max-w-[100px]",children:e.label})]}),i<d.stats.length-1&&(0,a.jsx)(s.motion.div,{className:"hidden sm:block h-px w-14 flex-shrink-0 mx-0",style:{background:"linear-gradient(90deg, rgba(22,163,74,0.6), rgba(22,163,74,0.1))"},initial:{scaleX:0},animate:{scaleX:1},transition:{duration:.6,delay:.3+.15*i}})]},e.label))}),(0,a.jsx)("div",{className:"mt-8 flex flex-wrap justify-center gap-2",children:d.credentialChips.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_45%,transparent)] px-2.5 py-1 text-[10.5px] font-medium opacity-70",children:[(0,a.jsx)(v,{}),e]},e))}),(0,a.jsxs)("div",{className:"mt-6 flex flex-wrap justify-center gap-3",children:[(0,a.jsx)(i.default,{href:x,className:"fin-site-hero-cta-primary shimmer-btn",children:y}),(0,a.jsxs)(i.default,{href:w,className:"fin-site-hero-cta-secondary",children:[_," →"]})]}),(0,a.jsxs)(s.motion.div,{className:"mt-10 fin-site-hero-calc-card rounded-[1.75rem] p-5 text-left",style:{background:"color-mix(in srgb, var(--site-bg) 52%, transparent)",backdropFilter:"blur(24px)",WebkitBackdropFilter:"blur(24px)",border:"1px solid color-mix(in srgb, var(--site-accent) 22%, var(--site-border))",boxShadow:"0 24px 60px -28px rgba(0,0,0,0.30), 0 0 40px -18px rgba(22,163,74,0.12)"},whileHover:{y:-3,transition:{duration:.3}},children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:"Net Pay Estimator"}),(0,a.jsx)("span",{className:"rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_50%,transparent)] px-2 py-0.5 text-[9.5px] font-medium opacity-50",children:"Illustrative"})]}),(0,a.jsx)(p,{salaryLabel:d.salaryLabel,defaultSalary:d.salaryPlaceholder})]}),h?.featuredChart&&(0,a.jsx)("div",{className:"mt-10 border-t border-[color:color-mix(in_srgb,var(--site-border)_60%,transparent)] pt-10 text-left",children:(0,a.jsxs)("div",{className:`grid gap-5 items-start ${h.secondChart?"lg:grid-cols-3":"lg:grid-cols-2"}`,children:[(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)] depth-image",children:[(0,a.jsx)("img",{src:h.featuredChart,alt:h.chartAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.chartAlt," — Illustrative. Not financial advice."]})})]}),h.infographic&&(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)] depth-image",children:[(0,a.jsx)("img",{src:h.infographic,alt:h.infographicAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.infographicAlt," — Illustrative."]})})]})]})})]})]})}function x({variant:e,siteBasePath:t,heroBlock:r}
21370){let d=c[e]??c.default,h=o[e]??null,m=l[e],u=r?.title?.trim()||d.headlineFallback,b=r?.body?.trim()||d.subheadlineFallback,f=r?.primaryCta?g(t,r.primaryCta.href):g(t,d.ctaPrimarySlug),y=r?.primaryCta?.label??d.ctaPrimaryLabel,w=r?.secondaryCta?g(t,r.secondaryCta.href):g(t,d.ctaSecondarySlug),_=r?.secondaryCta?.label??d.ctaSecondaryLabel;return(0,a.jsxs)("section",{className:"fin-hero-band fin-site-hero fin-hero-dark fin-hero-coastal","aria-label":"Site overview and income estimator",children:[(0,a.jsx)(n.FluidCanvas,{colorA:m.colorA,colorB:m.colorB,intensity:m.intensity,className:"absolute inset-0 z-0"}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0 bg-gradient-to-r from-[color-mix(in_srgb,var(--site-bg)_65%,transparent)] via-transparent to-transparent"}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 60% 50% at 80% 20%, rgba(2,132,199,0.18) 0%, transparent 65%)"}}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 100% 30% at 50% 100%, rgba(2,132,199,0.12) 0%, transparent 60%)"}}),(0,a.jsx)(s.motion.div,{className:"pointer-events-none absolute right-[20%] top-[15%] z-0 h-72 w-72 rounded-full",style:{background:"radial-gradient(circle, rgba(2,132,199,0.10) 0%, transparent 70%)",filter:"blur(44px)"},animate:{scale:[1,1.35,1],opacity:[.38,.65,.38]},transition:{duration:11,repeat:1/0,ease:"easeInOut"}}),(0,a.jsxs)("div",{className:"relative z-[1] mx-auto max-w-7xl px-4 sm:px-6 py-[clamp(4rem,10vw,8rem)]",children:[(0,a.jsxs)("div",{className:"flex flex-col lg:flex-row lg:items-start lg:gap-16",children:[(0,a.jsxs)("div",{className:"w-full lg:max-w-[55%] space-y-7",children:[(0,a.jsx)(s.motion.span,{className:"fin-site-hero-badge inline-flex items-center rounded-full border border-[color:color-mix(in_srgb,var(--site-accent)_40%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-accent)_10%,var(--site-bg))] px-3.5 py-1.5 text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)] w-fit",initial:{opacity:0,y:-10},animate:{opacity:1,y:0},transition:{duration:.5},style:{boxShadow:"0 0 20px rgba(2,132,199,0.18)"},children:d.badge}),(0,a.jsx)(s.motion.h1,{className:"fin-hero-title fin-hero-title--xl",initial:{opacity:0,y:14},animate:{opacity:1,y:0},transition:{duration:.55,delay:.07},children:u}),(0,a.jsx)("p",{className:"fin-hero-body",children:b}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:d.credentialChips.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_45%,transparent)] px-2.5 py-1 text-[10.5px] font-medium opacity-70",children:[(0,a.jsx)(v,{}),e]},e))}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,a.jsx)(i.default,{href:f,className:"fin-site-hero-cta-primary shimmer-btn",children:y}),(0,a.jsxs)(i.default,{href:w,className:"fin-site-hero-cta-secondary",children:[_," →"]})]})]}),h?.heroPhoto&&(0,a.jsxs)(s.motion.div,{className:"relative flex-1 mt-10 lg:mt-0 overflow-hidden rounded-3xl border border-[color:color-mix(in_srgb,var(--site-accent)_30%,var(--site-border))]",style:{boxShadow:"0 20px 80px -24px rgba(0,0,0,0.40), 0 0 50px -20px rgba(2,132,199,0.20)",transformStyle:"preserve-3d",perspective:"1000px"},animate:{y:[0,-10,0]},transition:{duration:9,repeat:1/0,ease:"easeInOut"},whileHover:{rotateY:-8,rotateX:3,transition:{duration:.4}},children:[(0,a.jsx)("img",{src:h.heroPhoto,alt:h.heroAlt,className:"w-full aspect-[16/10] object-cover",loading:"eager"}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 rounded-3xl bg-gradient-to-b from-transparent via-transparent to-[color-mix(in_srgb,var(--site-accent)_30%,rgba(0,0,0,0.4))]"})]})]}),(0,a.jsx)("div",{className:"mt-12 grid grid-cols-3 gap-4 border-t border-[color:color-mix(in_srgb,var(--site-accent)_20%,var(--site-border))] pt-8",children:d.stats.map((e,i)=>(0,a.jsxs)(s.motion.div,{className:"rounded-xl px-5 py-4 flex items-center gap-5",style:{background:"color-mix(in srgb, var(--site-bg) 45%, transparent)",backdropFilter:"blur(16px)",WebkitBackdropFilter:"blur(16px)",border:"1px solid color-mix(in srgb, var(--site-accent) 18%, var(--site-border))",boxShadow:"0 4px 20px -8px rgba(2,132,199,0.12)"},initial:{opacity:0,y:12}
21370,animate:{opacity:1,y:0},transition:{duration:.45,delay:.1+.08*i},whileHover:{scale:1.04,transition:{duration:.25}},children:[(0,a.jsx)("div",{className:"h-8 w-1 rounded-full flex-shrink-0",style:{background:"var(--site-accent)",boxShadow:"0 0 8px rgba(2,132,199,0.5)"}}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-[1.3rem] font-bold tabular-nums leading-none",style:{color:"var(--site-accent)",textShadow:"0 0 16px rgba(2,132,199,0.5)"},children:e.figure}),(0,a.jsx)("p",{className:"mt-1 text-[11px] opacity-50",children:e.label})]})]},e.label))}),(0,a.jsx)("div",{className:"mt-8 flex justify-start",children:(0,a.jsxs)(s.motion.div,{className:"w-full max-w-[540px] fin-site-hero-calc-card rounded-[1.75rem] p-5",style:{background:"color-mix(in srgb, var(--site-bg) 50%, transparent)",backdropFilter:"blur(24px)",WebkitBackdropFilter:"blur(24px)",border:"1px solid color-mix(in srgb, var(--site-accent) 20%, var(--site-border))",boxShadow:"0 24px 60px -28px rgba(0,0,0,0.28), 0 0 40px -18px rgba(2,132,199,0.12)"},whileHover:{y:-4,transition:{duration:.3}},children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:"Net Pay Estimator"}),(0,a.jsx)("span",{className:"rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_50%,transparent)] px-2 py-0.5 text-[9.5px] font-medium opacity-50",children:"Illustrative"})]}),(0,a.jsx)(p,{salaryLabel:d.salaryLabel,defaultSalary:d.salaryPlaceholder})]})}),h?.featuredChart&&(0,a.jsx)("div",{className:"mt-10 border-t border-[color:color-mix(in_srgb,var(--site-border)_60%,transparent)] pt-10",children:(0,a.jsxs)("div",{className:`grid gap-5 items-start ${h.secondChart?"lg:grid-cols-3":"lg:grid-cols-2"}`,children:[(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)] depth-image",children:[(0,a.jsx)("img",{src:h.featuredChart,alt:h.chartAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.chartAlt," — Illustrative. Not financial advice."]})})]}),h.infographic&&(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)] depth-image",children:[(0,a.jsx)("img",{src:h.infographic,alt:h.infographicAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.infographicAlt," — Illustrative."]})})]})]})})]})]})}function y({variant:e,siteBasePath:t,heroBlock:r}){let d=c[e]??c.default,h=o[e]??null,m=l[e],u=r?.title?.trim()||d.headlineFallback,b=r?.body?.trim()||d.subheadlineFallback,f=r?.primaryCta?g(t,r.primaryCta.href):g(t,d.ctaPrimarySlug),x=r?.primaryCta?.label??d.ctaPrimaryLabel,w=r?.secondaryCta?g(t,r.secondaryCta.href):g(t,d.ctaSecondarySlug),_=r?.secondaryCta?.label??d.ctaSecondaryLabel;return(0,a.jsxs)("section",{className:"fin-hero-band fin-site-hero fin-hero-dark fin-hero-planner-ca","aria-label":"Site overview and income estimator",children:[(0,a.jsx)(n.FluidCanvas,{colorA:m.colorA,colorB:m.colorB,intensity:m.intensity,className:"absolute inset-0 z-0"}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 65% 60% at 75% 40%, rgba(194,65,12,0.20) 0%, transparent 65%)"}}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 45% 55% at 0% 60%, rgba(194,65,12,0.14) 0%, transparent 60%)"}}),(0,a.jsx)(s.motion.div,{className:"pointer-events-none absolute right-[12%] top-[20%] z-0 h-72 w-72 rounded-full",style:{background:"radial-gradient(circle, rgba(194,65,12,0.12) 0%, transparent 70%)",filter:"blur(44px)"},animate:{scale:[1,1.38,1],opacity:[.4,.68,.4]},transition:{duration:10,repeat:1/0,ease:"easeInOut"}}),(0,a.jsxs)("div",{className:"relative z-[1] mx-auto max-w-7xl px-4 sm:px-6 py-[clamp(4rem,9vw,7rem)]",children:[(0,a.jsx)("div",{className:"mb-8 h-1 w-16 rounded-full",style:{background:"var(--site-accent)",boxShadow:"0 0 16px rgba(194,65,12,0.7), 0 0 6px rgba(194,65,12,0.5)"}}),(0,a.jsxs)("div",{className:"flex flex-col gap-12 lg:flex-row lg:items-stretch lg:gap-14",children:[(0,a.jsxs)("div",{className:"flex flex-1 flex-col justify-between gap-10 lg:max-w-[52%]",children:[(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsx)(s.motion.span,{className:"fin-site-hero-badge inline-flex items-center rounded-full border border-[color:color-mix(in_srgb,var(--site-accent)_40%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-accent)_10%,var(--site-bg))] px-3.5 py-1.5 text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)] w-fit",initial:{opacity:0,y:-8}
21370,animate:{opacity:1,y:0},transition:{duration:.5},style:{boxShadow:"0 0 18px rgba(194,65,12,0.18)"},children:d.badge}),(0,a.jsx)(s.motion.h1,{className:"fin-hero-title",initial:{opacity:0,y:14},animate:{opacity:1,y:0},transition:{duration:.55,delay:.07},children:u}),(0,a.jsx)("p",{className:"fin-hero-body text-[1.05rem] leading-relaxed",children:b})]}),(0,a.jsxs)("div",{className:"space-y-5",children:[(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:d.credentialChips.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_45%,transparent)] px-2.5 py-1 text-[10.5px] font-medium opacity-70",children:[(0,a.jsx)(v,{}),e]},e))}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,a.jsx)(i.default,{href:f,className:"fin-site-hero-cta-primary shimmer-btn",children:x}),(0,a.jsxs)(i.default,{href:w,className:"fin-site-hero-cta-secondary",children:[_," →"]})]}),(0,a.jsx)("div",{className:"pt-4 border-t border-[color:color-mix(in_srgb,var(--site-border)_50%,transparent)] flex flex-col gap-3",children:d.stats.map(e=>(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-[11px] opacity-50",children:e.label}),(0,a.jsx)("span",{className:"text-[1.15rem] font-bold tabular-nums",style:{color:"var(--site-accent)",textShadow:"0 0 18px rgba(194,65,12,0.5)"},children:e.figure})]},e.label))})]})]}),h?.heroPhoto?(0,a.jsxs)("div",{className:"relative w-full lg:w-[420px] lg:flex-shrink-0",children:[(0,a.jsx)("div",{className:"absolute inset-0 rounded-[2rem] translate-x-3 translate-y-3 border border-[color:color-mix(in_srgb,var(--site-accent)_15%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-accent)_5%,var(--site-bg))] z-[0]"}),(0,a.jsx)("div",{className:"absolute inset-0 rounded-[2rem] translate-x-1.5 translate-y-1.5 border border-[color:color-mix(in_srgb,var(--site-accent)_10%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-accent)_3%,var(--site-bg))] z-[1]"}),(0,a.jsxs)(s.motion.div,{className:"relative z-[2] overflow-hidden rounded-[2rem] border border-[color:color-mix(in_srgb,var(--site-accent)_35%,var(--site-border))]",style:{boxShadow:"0 20px 80px -24px rgba(0,0,0,0.45), 0 0 40px -16px rgba(194,65,12,0.20)",transformStyle:"preserve-3d"},animate:{y:[0,-8,0]},transition:{duration:8,repeat:1/0,ease:"easeInOut"},whileHover:{rotateY:-6,rotateX:2,transition:{duration:.4}},children:[(0,a.jsx)("img",{src:h.heroPhoto,alt:h.heroAlt,className:"w-full object-cover",style:{aspectRatio:"3/4"},loading:"eager"}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 rounded-[2rem] bg-gradient-to-t from-[color-mix(in_srgb,var(--site-accent)_40%,rgba(0,0,0,0.5))] to-transparent"}),(0,a.jsx)("div",{className:"absolute bottom-0 left-0 right-0 p-5",children:(0,a.jsxs)("div",{className:"fin-site-hero-calc-card rounded-2xl p-4",style:{background:"color-mix(in srgb, var(--site-bg) 55%, transparent)",backdropFilter:"blur(20px)",WebkitBackdropFilter:"blur(20px)",border:"1px solid color-mix(in srgb, var(--site-accent) 25%, var(--site-border))",boxShadow:"0 8px 24px -8px rgba(0,0,0,0.35)"},children:[(0,a.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[10px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:"Net Pay Estimator"}),(0,a.jsx)("span",{className:"rounded border border-[color:var(--site-border)] px-1.5 py-0.5 text-[8.5px] opacity-40",children:"Illustrative"})]}),(0,a.jsx)(p,{salaryLabel:d.salaryLabel,defaultSalary:d.salaryPlaceholder})]})})]})]}):(0,a.jsxs)(s.motion.div,{className:"w-full lg:w-[420px] lg:flex-shrink-0 fin-site-hero-calc-card rounded-[1.75rem] p-5",style:{background:"color-mix(in srgb, var(--site-bg) 50%, transparent)",backdropFilter:"blur(24px)",WebkitBackdropFilter:"blur(24px)",border:"1px solid color-mix(in srgb, var(--site-accent) 22%, var(--site-border))",boxShadow:"0 24px 60px -28px rgba(0,0,0,0.30), 0 0 40px -18px rgba(194,65,12,0.14)"},whileHover:{y:-4,transition:{duration:.3}},children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:"Net Pay Estimator"}),(0,a.jsx)("span",{className:"rounded-md border border-[color:var(--site-border)] px-2 py-0.5 text-[9.5px] opacity-50",children:"Illustrative"})]}),(0,a.jsx)(p,{salaryLabel:d.salaryLabel,defaultSalary:d.salaryPlaceholder})]})]}),h?.featuredChart&&(0,a.jsx)("div",{className:"mt-10 border-t border-[color:color-mix(in_srgb,var(--site-border)_60%,transparent)] pt-10",children:(0,a.jsxs)("div",{className:"grid gap-5 items-start lg:grid-cols-2",children:[(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)] depth-image",children:[(0,a.jsx)("img",{src:h.featuredChart,alt:h.chartAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.chartAlt," — Illustrative. Not financial advice."]})})]}),h.infographic&&(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)] depth-image",children:[(0,a.jsx)("img",{src:h.infographic,alt:h.infographicAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.infographicAlt," — Illustrative."]})})]})]})})]})]})}function w({variant:e,siteBasePath:t,heroBlock:r}
21370){let d=c[e]??c.default,h=o[e]??null,m=l[e],u=r?.title?.trim()||d.headlineFallback,b=r?.body?.trim()||d.subheadlineFallback,f=r?.primaryCta?g(t,r.primaryCta.href):g(t,d.ctaPrimarySlug),x=r?.primaryCta?.label??d.ctaPrimaryLabel,y=r?.secondaryCta?g(t,r.secondaryCta.href):g(t,d.ctaSecondarySlug),_=r?.secondaryCta?.label??d.ctaSecondaryLabel,k=d.stats[0];return(0,a.jsxs)("section",{className:"fin-hero-band fin-site-hero fin-hero-dark fin-hero-aviation","aria-label":"Site overview and income estimator",children:[(0,a.jsx)(n.FluidCanvas,{colorA:m.colorA,colorB:m.colorB,intensity:m.intensity,className:"absolute inset-0 z-0"}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0 opacity-[0.04]",style:{backgroundImage:"repeating-linear-gradient(65deg, #f59e0b 0px, #f59e0b 1px, transparent 1px, transparent 24px)",backgroundSize:"34px 34px"}}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 60% 45% at 30% 0%, rgba(245,158,11,0.20) 0%, transparent 65%)"}}),(0,a.jsx)(s.motion.div,{className:"pointer-events-none absolute right-[5%] bottom-[20%] z-0 h-72 w-72 rounded-full",style:{background:"radial-gradient(circle, rgba(245,158,11,0.10) 0%, transparent 70%)",filter:"blur(44px)"},animate:{scale:[1,1.36,1],opacity:[.38,.65,.38]},transition:{duration:11,repeat:1/0,ease:"easeInOut"}}),(0,a.jsxs)("div",{className:"relative z-[1] mx-auto max-w-7xl px-4 sm:px-6 py-[clamp(4rem,9vw,7rem)]",children:[(0,a.jsx)("div",{className:"mb-10 h-px",style:{background:"linear-gradient(90deg, rgba(245,158,11,0.8) 0%, rgba(245,158,11,0.3) 50%, transparent 100%)"}}),(0,a.jsxs)("div",{className:"mb-10 flex items-end gap-6",children:[(0,a.jsxs)(s.motion.div,{className:"relative",initial:{opacity:0,y:30},animate:{opacity:1,y:0},transition:{duration:.6,ease:[.16,1,.3,1]},children:[(0,a.jsx)("svg",{className:"absolute -inset-6 pointer-events-none opacity-25",width:"100%",height:"100%",viewBox:"0 0 180 100",fill:"none","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M10 90 Q90 -20 170 90",stroke:"#f59e0b",strokeWidth:"1.5",strokeDasharray:"6 4",strokeLinecap:"round"})}),(0,a.jsx)("p",{className:"text-[0.7rem] uppercase tracking-[0.25em] opacity-40 mb-2",children:k.label}),(0,a.jsx)("p",{className:"text-[5rem] font-black tabular-nums leading-none tracking-tighter",style:{color:"var(--site-accent)",textShadow:"0 0 40px rgba(245,158,11,0.55), 0 4px 12px rgba(0,0,0,0.4)"},children:k.figure})]}),(0,a.jsx)(s.motion.span,{className:"fin-site-hero-badge inline-flex items-center rounded-full border border-[color:color-mix(in_srgb,var(--site-accent)_40%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-accent)_10%,var(--site-bg))] px-3.5 py-1.5 text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)] mb-3",initial:{opacity:0}
21370,animate:{opacity:1},transition:{duration:.5,delay:.15},style:{boxShadow:"0 0 18px rgba(245,158,11,0.18)"},children:d.badge})]}),(0,a.jsx)("div",{className:"mb-10 h-px",style:{background:"linear-gradient(90deg, transparent 0%, rgba(245,158,11,0.25) 30%, rgba(245,158,11,0.10) 70%, transparent 100%)"}}),(0,a.jsxs)("div",{className:"flex flex-col gap-10 lg:flex-row lg:items-start lg:gap-20",children:[(0,a.jsxs)("div",{className:"flex-1 space-y-6",children:[(0,a.jsx)(s.motion.h1,{className:"fin-hero-title",initial:{opacity:0,y:14},animate:{opacity:1,y:0},transition:{duration:.5,delay:.1},children:u}),(0,a.jsx)("p",{className:"fin-hero-body max-w-[500px]",children:b}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:d.credentialChips.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_45%,transparent)] px-2.5 py-1 text-[10.5px] font-medium opacity-70",children:[(0,a.jsx)(v,{}),e]},e))}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,a.jsx)(i.default,{href:f,className:"fin-site-hero-cta-primary shimmer-btn",children:x}),(0,a.jsxs)(i.default,{href:y,className:"fin-site-hero-cta-secondary",children:[_," →"]})]}),(0,a.jsx)("div",{className:"pt-4 flex gap-10",children:d.stats.slice(1).map((e,i)=>(0,a.jsxs)(s.motion.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.4,delay:.2+.08*i},whileHover:{scale:1.05,transition:{duration:.25}},children:[(0,a.jsx)("p",{className:"text-[1.45rem] font-bold tabular-nums leading-none",style:{color:"var(--site-accent)",textShadow:"0 0 18px rgba(245,158,11,0.45)"},children:e.figure}),(0,a.jsx)("p",{className:"mt-1 text-[11px] opacity-50",children:e.label})]},e.label))})]}),(0,a.jsxs)("div",{className:"w-full lg:w-[460px] lg:flex-shrink-0 space-y-5",children:[(0,a.jsxs)(s.motion.div,{className:"fin-site-hero-calc-card rounded-[1.75rem] p-5",style:{background:"color-mix(in srgb, var(--site-bg) 50%, transparent)",backdropFilter:"blur(24px)",WebkitBackdropFilter:"blur(24px)",border:"1px solid color-mix(in srgb, var(--site-accent) 22%, var(--site-border))",boxShadow:"0 24px 60px -28px rgba(0,0,0,0.32), 0 0 40px -18px rgba(245,158,11,0.14)"},whileHover:{y:-4,transition:{duration:.3}},children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:"Net Pay Estimator"}),(0,a.jsx)("span",{className:"rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_50%,transparent)] px-2 py-0.5 text-[9.5px] font-medium opacity-50",children:"Illustrative"})]}),(0,a.jsx)(p,{salaryLabel:d.salaryLabel,defaultSalary:d.salaryPlaceholder})]}),h?.heroPhoto&&(0,a.jsx)(s.motion.div,{className:"overflow-hidden rounded-2xl border border-[color:color-mix(in_srgb,var(--site-accent)_25%,var(--site-border))]",style:{boxShadow:"0 8px 40px -16px rgba(245,158,11,0.22), 0 4px 20px -8px rgba(0,0,0,0.30)"},animate:{y:[0,-8,0]},transition:{duration:8,repeat:1/0,ease:"easeInOut"},whileHover:{scale:1.02,transition:{duration:.3}},children:(0,a.jsx)("img",{src:h.heroPhoto,alt:h.heroAlt,className:"w-full aspect-[4/3] object-cover",loading:"eager"})})]})]}),h?.featuredChart&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"mt-12 h-px",style:{background:"linear-gradient(90deg, transparent 0%, rgba(245,158,11,0.20) 30%, rgba(245,158,11,0.08) 70%, transparent 100%)"}}),(0,a.jsxs)("div",{className:"mt-10 grid gap-5 items-start lg:grid-cols-2",children:[(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:h.featuredChart,alt:h.chartAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.chartAlt," — Illustrative. Not financial advice."]})})]}),h.infographic&&(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:h.infographic,alt:h.infographicAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.infographicAlt," — Illustrative."]})})]})]})]})]})]})}function _({variant:e,siteBasePath:t,heroBlock:r}
21370){let d=c[e]??c.default,h=o[e]??null,m=l[e],u=r?.title?.trim()||d.headlineFallback,b=r?.body?.trim()||d.subheadlineFallback,f=r?.primaryCta?g(t,r.primaryCta.href):g(t,d.ctaPrimarySlug),x=r?.primaryCta?.label??d.ctaPrimaryLabel,y=r?.secondaryCta?g(t,r.secondaryCta.href):g(t,d.ctaSecondarySlug),w=r?.secondaryCta?.label??d.ctaSecondaryLabel;return(0,a.jsxs)("section",{className:"fin-hero-band fin-site-hero fin-hero-dark fin-hero-executive","aria-label":"Site overview and income estimator",children:[(0,a.jsx)(n.FluidCanvas,{colorA:m.colorA,colorB:m.colorB,intensity:m.intensity,className:"absolute inset-0 z-0"}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0 opacity-[0.035]",style:{backgroundImage:"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E\")",backgroundSize:"200px 200px"}}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 55% 55% at 100% 50%, rgba(159,18,57,0.22) 0%, transparent 65%)"}}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 70% 30% at 50% 100%, rgba(159,18,57,0.10) 0%, transparent 60%)"}}),(0,a.jsx)(s.motion.div,{className:"pointer-events-none absolute right-[15%] top-[10%] z-0 h-80 w-80 rounded-full",style:{background:"radial-gradient(circle, rgba(159,18,57,0.12) 0%, transparent 70%)",filter:"blur(52px)"},animate:{scale:[1,1.32,1],opacity:[.4,.65,.4]},transition:{duration:12,repeat:1/0,ease:"easeInOut"}}),(0,a.jsxs)("div",{className:"relative z-[1] mx-auto max-w-7xl px-4 sm:px-6 py-[clamp(5rem,10vw,8rem)]",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-10 lg:flex-row lg:items-end lg:gap-16",children:[(0,a.jsxs)("div",{className:"space-y-6 lg:max-w-[55%]",children:[(0,a.jsx)(s.motion.span,{className:"fin-site-hero-badge inline-flex items-center rounded-full border border-[color:color-mix(in_srgb,var(--site-accent)_40%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-accent)_10%,var(--site-bg))] px-3.5 py-1.5 text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)] w-fit",initial:{opacity:0,y:-8},animate:{opacity:1,y:0},transition:{duration:.4},style:{boxShadow:"0 0 20px rgba(159,18,57,0.22)"},children:d.badge}),(0,a.jsx)(s.motion.h1,{className:"fin-hero-title fin-hero-title--xl",initial:{opacity:0,y:14},animate:{opacity:1,y:0},transition:{duration:.5,delay:.06},children:u}),(0,a.jsx)("p",{className:"fin-hero-body",children:b}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,a.jsx)(i.default,{href:f,className:"fin-site-hero-cta-primary shimmer-btn",children:x}),(0,a.jsxs)(i.default,{href:y,className:"fin-site-hero-cta-secondary",children:[w," →"]})]})]}),(0,a.jsxs)(s.motion.div,{className:"w-full lg:w-[440px] lg:flex-shrink-0 fin-site-hero-calc-card rounded-[1.75rem] p-5",style:{background:"color-mix(in srgb, var(--site-bg) 52%, transparent)",backdropFilter:"blur(24px)",WebkitBackdropFilter:"blur(24px)",border:"1px solid color-mix(in srgb, var(--site-accent) 22%, var(--site-border))",boxShadow:"0 24px 60px -28px rgba(0,0,0,0.35), 0 0 40px -18px rgba(159,18,57,0.14)"},whileHover:{y:-4,transition:{duration:.3}},children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:"Net Pay Estimator"}),(0,a.jsx)("span",{className:"rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_50%,transparent)] px-2 py-0.5 text-[9.5px] font-medium opacity-50",children:"Illustrative"})]}),(0,a.jsx)(p,{salaryLabel:d.salaryLabel,defaultSalary:d.salaryPlaceholder})]})]}),(0,a.jsxs)("div",{className:"mt-14 border-t border-[color:color-mix(in_srgb,var(--site-border)_60%,transparent)] pt-8 grid grid-cols-3 gap-0",children:[d.stats.map((e,i)=>(0,a.jsxs)(s.motion.div,{className:`px-8 py-5 ${i<d.stats.length-1?"border-r border-[color:color-mix(in_srgb,var(--site-border)_60%,transparent)]":""}`,initial:{opacity:0,rotateX:-8}
21370,animate:{opacity:1,rotateX:0},transition:{duration:.5,delay:.1+.1*i},whileHover:{y:-5,scale:1.03,transition:{duration:.25}},style:{transformStyle:"preserve-3d"},children:[(0,a.jsx)("p",{className:"text-[2rem] font-black tabular-nums leading-none tracking-tight",style:{color:"var(--site-accent)",textShadow:"0 0 28px rgba(159,18,57,0.55)"},children:e.figure}),(0,a.jsx)("p",{className:"mt-2 text-[11px] uppercase tracking-[0.15em] opacity-45",children:e.label})]},e.label)),(0,a.jsx)("div",{className:"col-span-3 pt-5 flex flex-wrap gap-2 border-t border-[color:color-mix(in_srgb,var(--site-border)_40%,transparent)] mt-4",children:d.credentialChips.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_45%,transparent)] px-2.5 py-1 text-[10.5px] font-medium opacity-70",children:[(0,a.jsx)(v,{}),e]},e))})]}),h?.featuredChart&&(0,a.jsxs)("div",{className:"mt-10 grid gap-5 items-start lg:grid-cols-2",children:[(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:h.featuredChart,alt:h.chartAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.chartAlt," — Illustrative. Not financial advice."]})})]}),h.infographic&&(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:h.infographic,alt:h.infographicAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.infographicAlt," — Illustrative."]})})]})]})]})]})}function k({variant:e,siteBasePath:t,heroBlock:r}){let d=c[e]??c.default,h=o[e]??null,m=l[e],u=r?.title?.trim()||d.headlineFallback,b=r?.body?.trim()||d.subheadlineFallback,f=r?.primaryCta?g(t,r.primaryCta.href):g(t,d.ctaPrimarySlug),x=r?.primaryCta?.label??d.ctaPrimaryLabel,y=r?.secondaryCta?g(t,r.secondaryCta.href):g(t,d.ctaSecondarySlug),w=r?.secondaryCta?.label??d.ctaSecondaryLabel;return(0,a.jsxs)("section",{className:"fin-hero-band fin-site-hero fin-hero-dark fin-hero-counsel","aria-label":"Site overview and income estimator",children:[(0,a.jsx)(n.FluidCanvas,{colorA:m.colorA,colorB:m.colorB,intensity:m.intensity,className:"absolute inset-0 z-0"}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0 opacity-[0.06]",style:{backgroundImage:"radial-gradient(circle, #ca8a04 1.5px, transparent 1.5px)",backgroundSize:"26px 26px"}}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 55% 60% at 10% 50%, rgba(202,138,4,0.18) 0%, transparent 65%)"}}),(0,a.jsx)(s.motion.div,{className:"pointer-events-none absolute left-[40%] top-[10%] z-0 h-64 w-64 rounded-full",style:{background:"radial-gradient(circle, rgba(202,138,4,0.10) 0%, transparent 70%)",filter:"blur(40px)"},animate:{scale:[1,1.34,1],opacity:[.38,.62,.38]},transition:{duration:10,repeat:1/0,ease:"easeInOut"}}),(0,a.jsx)("div",{className:"relative z-[1] mx-auto max-w-7xl px-4 sm:px-6 py-[clamp(4rem,9vw,7rem)]",children:(0,a.jsxs)("div",{className:"flex flex-col gap-10 lg:flex-row lg:items-stretch lg:gap-0",children:[(0,a.jsxs)("div",{className:"hidden lg:flex w-[72px] flex-shrink-0 flex-col items-center justify-start pt-2 border-r border-[color:color-mix(in_srgb,var(--site-accent)_30%,var(--site-border))] mr-10",children:[(0,a.jsx)("div",{className:"w-full flex flex-col items-center gap-1 pb-2 border-b border-[color:color-mix(in_srgb,var(--site-accent)_40%,var(--site-border))]",children:(0,a.jsx)("div",{className:"h-5 w-5 rounded-full border border-[color:var(--site-accent)] opacity-50",style:{boxShadow:"0 0 8px rgba(202,138,4,0.35)"}})}),(0,a.jsxs)("div",{className:"mt-4 flex flex-col items-center gap-3",children:[(0,a.jsx)("div",{className:"h-8 w-px",style:{background:"linear-gradient(to bottom, rgba(202,138,4,0.8), rgba(202,138,4,0.15))"}}),(0,a.jsx)("span",{className:"text-[9.5px] font-bold uppercase tracking-[0.3em] text-[color:var(--site-accent-text)]",style:{writingMode:"vertical-rl",transform:"rotate(180deg)",textShadow:"0 0 14px rgba(202,138,4,0.55)"},children:d.badge}),(0,a.jsx)("div",{className:"h-8 w-px",style:{background:"linear-gradient(to top, rgba(202,138,4,0.8), rgba(202,138,4,0.15))"}})]})]}),(0,a.jsxs)("div",{className:"flex-1 space-y-8 lg:pr-10 lg:border-r lg:border-[color:color-mix(in_srgb,var(--site-border)_50%,transparent)]",children:[(0,a.jsx)(s.motion.span,{className:"fin-site-hero-badge lg:hidden inline-flex items-center rounded-full border border-[color:color-mix(in_srgb,var(--site-accent)_40%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-accent)_10%,var(--site-bg))] px-3.5 py-1.5 text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)] w-fit",initial:{opacity:0}
21370,animate:{opacity:1},transition:{duration:.4},style:{boxShadow:"0 0 18px rgba(202,138,4,0.18)"},children:d.badge}),(0,a.jsx)(s.motion.h1,{className:"fin-hero-title fin-hero-title--xl",initial:{opacity:0,y:14},animate:{opacity:1,y:0},transition:{duration:.5,delay:.06},children:u}),(0,a.jsx)("p",{className:"fin-hero-body max-w-[600px]",children:b}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:d.credentialChips.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_45%,transparent)] px-2.5 py-1 text-[10.5px] font-medium opacity-70",children:[(0,a.jsx)(v,{}),e]},e))}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,a.jsx)(i.default,{href:f,className:"fin-site-hero-cta-primary shimmer-btn",children:x}),(0,a.jsxs)(i.default,{href:y,className:"fin-site-hero-cta-secondary",children:[w," →"]})]}),(0,a.jsx)("div",{className:"grid grid-cols-3 gap-4 pt-4",children:d.stats.map((e,i)=>(0,a.jsxs)(s.motion.div,{className:"rounded-xl border border-[color:color-mix(in_srgb,var(--site-accent)_20%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-soft)_25%,transparent)] px-4 py-4",initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.45,delay:.1+.08*i},whileHover:{rotateY:6,scale:1.04,transition:{duration:.3}},style:{transformStyle:"preserve-3d"},children:[(0,a.jsx)("p",{className:"text-[1.25rem] font-bold tabular-nums leading-none",style:{color:"var(--site-accent)",textShadow:"0 0 18px rgba(202,138,4,0.45)"},children:e.figure}),(0,a.jsx)("p",{className:"mt-1.5 text-[11px] opacity-50",children:e.label})]},e.label))}),h?.featuredChart&&(0,a.jsxs)("div",{className:"grid gap-5 items-start lg:grid-cols-2",children:[(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:h.featuredChart,alt:h.chartAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.chartAlt," — Illustrative. Not financial advice."]})})]}),h.infographic&&(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:h.infographic,alt:h.infographicAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.infographicAlt," — Illustrative."]})})]})]})]}),(0,a.jsxs)("div",{className:"w-full lg:w-[340px] lg:flex-shrink-0 lg:pl-10",children:[(0,a.jsxs)(s.motion.div,{className:"fin-site-hero-calc-card rounded-[1.75rem] overflow-hidden",style:{background:"color-mix(in srgb, var(--site-bg) 52%, transparent)",backdropFilter:"blur(24px)",WebkitBackdropFilter:"blur(24px)",border:"1px solid color-mix(in srgb, var(--site-accent) 22%, var(--site-border))",boxShadow:"0 24px 60px -28px rgba(0,0,0,0.28), 0 0 40px -18px rgba(202,138,4,0.14)"},whileHover:{y:-4,transition:{duration:.3}},children:[(0,a.jsx)("div",{className:"h-1 w-full",style:{background:"linear-gradient(90deg, rgba(202,138,4,0.9) 0%, rgba(202,138,4,0.3) 100%)"}}),(0,a.jsxs)("div",{className:"p-5",children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:"Net Pay Estimator"}),(0,a.jsx)("span",{className:"rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_50%,transparent)] px-2 py-0.5 text-[9.5px] font-medium opacity-50",children:"Illustrative"})]}),(0,a.jsx)(p,{salaryLabel:d.salaryLabel,defaultSalary:d.salaryPlaceholder})]})]}),h?.heroPhoto&&(0,a.jsx)(s.motion.div,{className:"mt-5 overflow-hidden rounded-2xl border border-[color:color-mix(in_srgb,var(--site-accent)_25%,var(--site-border))]",style:{boxShadow:"0 8px 40px -16px rgba(202,138,4,0.20)"},animate:{y:[0,-8,0]},transition:{duration:9,repeat:1/0,ease:"easeInOut"},children:(0,a.jsx)("img",{src:h.heroPhoto,alt:h.heroAlt,className:"w-full aspect-[4/3] object-cover",loading:"eager"})})]})]})})]})}function j({variant:e,siteBasePath:t,heroBlock:r}
21370){let d=c[e]??c.default,h=o[e]??null,m=l[e],u=r?.title?.trim()||d.headlineFallback,b=r?.body?.trim()||d.subheadlineFallback,f=r?.primaryCta?g(t,r.primaryCta.href):g(t,d.ctaPrimarySlug),x=r?.primaryCta?.label??d.ctaPrimaryLabel,y=r?.secondaryCta?g(t,r.secondaryCta.href):g(t,d.ctaSecondarySlug),w=r?.secondaryCta?.label??d.ctaSecondaryLabel;return(0,a.jsxs)("section",{className:"fin-hero-band fin-site-hero fin-hero-dark fin-hero-clinical","aria-label":"Site overview and income estimator",children:[(0,a.jsx)(n.FluidCanvas,{colorA:m.colorA,colorB:m.colorB,intensity:m.intensity,className:"absolute inset-0 z-0"}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0 opacity-[0.045]",style:{backgroundImage:"repeating-linear-gradient(0deg, #0d9488 0px, #0d9488 1px, transparent 1px, transparent 28px), repeating-linear-gradient(90deg, #0d9488 0px, #0d9488 1px, transparent 1px, transparent 28px)",backgroundSize:"28px 28px"}}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 65% 45% at 50% 0%, rgba(13,148,136,0.18) 0%, transparent 65%)"}}),(0,a.jsx)(s.motion.div,{className:"pointer-events-none absolute left-0 right-0 z-0 h-px",style:{background:"linear-gradient(90deg, transparent 0%, rgba(13,148,136,0.5) 30%, rgba(13,148,136,0.7) 50%, rgba(13,148,136,0.5) 70%, transparent 100%)"},animate:{top:["10%","90%","10%"]},transition:{duration:14,repeat:1/0,ease:"linear"}}),(0,a.jsx)(s.motion.div,{className:"pointer-events-none absolute right-[10%] bottom-[15%] z-0 h-64 w-64 rounded-full",style:{background:"radial-gradient(circle, rgba(13,148,136,0.10) 0%, transparent 70%)",filter:"blur(40px)"},animate:{scale:[1,1.35,1],opacity:[.38,.65,.38]},transition:{duration:9,repeat:1/0,ease:"easeInOut"}}),(0,a.jsxs)("div",{className:"relative z-[1] mx-auto max-w-7xl px-4 sm:px-6 py-[clamp(4rem,9vw,7rem)]",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-10 lg:flex-row lg:items-start lg:gap-14 mb-10",children:[(0,a.jsxs)("div",{className:"flex-1 space-y-6 lg:max-w-[52%]",children:[(0,a.jsx)(s.motion.span,{className:"fin-site-hero-badge inline-flex items-center rounded-full border border-[color:color-mix(in_srgb,var(--site-accent)_40%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-accent)_10%,var(--site-bg))] px-3.5 py-1.5 text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)] w-fit",initial:{opacity:0,y:-8},animate:{opacity:1,y:0},transition:{duration:.4},style:{boxShadow:"0 0 18px rgba(13,148,136,0.20)"},children:d.badge}),(0,a.jsx)(s.motion.h1,{className:"fin-hero-title",initial:{opacity:0,y:14},animate:{opacity:1,y:0},transition:{duration:.5,delay:.07},children:u}),(0,a.jsx)("p",{className:"fin-hero-body",children:b}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,a.jsx)(i.default,{href:f,className:"fin-site-hero-cta-primary shimmer-btn",children:x}),(0,a.jsxs)(i.default,{href:y,className:"fin-site-hero-cta-secondary",children:[w," →"]})]})]}),(0,a.jsx)("div",{className:"w-full lg:w-[380px] lg:flex-shrink-0 grid grid-cols-2 gap-3",style:{perspective:"800px"},children:d.stats.map((e,i)=>(0,a.jsxs)(s.motion.div,{className:"rounded-2xl border border-[color:color-mix(in_srgb,var(--site-accent)_20%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-soft)_25%,transparent)] p-5",initial:{opacity:0,rotateX:-6,scale:.94},animate:{opacity:1,rotateX:0,scale:1},transition:{duration:.45,delay:.08+.07*i},whileHover:{rotateX:-4,scale:1.04,transition:{duration:.25}},style:{transformStyle:"preserve-3d"},children:[(0,a.jsx)("div",{className:"mb-2 h-0.5 w-6 rounded-full",style:{background:"var(--site-accent)",boxShadow:"0 0 8px rgba(13,148,136,0.5)"}}),(0,a.jsx)("p",{className:"text-[1.5rem] font-bold tabular-nums leading-none",style:{color:"var(--site-accent)",textShadow:"0 0 18px rgba(13,148,136,0.50)"},children:e.figure}),(0,a.jsx)("p",{className:"mt-2 text-[11px] leading-snug opacity-55",children:e.label})]},e.label))})]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2 pb-8 border-b border-[color:color-mix(in_srgb,var(--site-border)_60%,transparent)]",children:d.credentialChips.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_45%,transparent)] px-2.5 py-1 text-[10.5px] font-medium opacity-70",children:[(0,a.jsx)(v,{}),e]},e))}),(0,a.jsxs)("div",{className:"mt-8 flex flex-col lg:flex-row gap-6 items-start",children:[(0,a.jsxs)(s.motion.div,{className:"w-full lg:w-[500px] lg:flex-shrink-0 fin-site-hero-calc-card rounded-[1.75rem] p-5",style:{background:"color-mix(in srgb, var(--site-bg) 52%, transparent)",backdropFilter:"blur(24px)",WebkitBackdropFilter:"blur(24px)",border:"1px solid color-mix(in srgb, var(--site-accent) 22%, var(--site-border))",boxShadow:"0 24px 60px -28px rgba(0,0,0,0.28), 0 0 40px -18px rgba(13,148,136,0.12)"},whileHover:{y:-4,transition:{duration:.3}},children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:"Net Pay Estimator"}),(0,a.jsx)("span",{className:"rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_50%,transparent)] px-2 py-0.5 text-[9.5px] font-medium opacity-50",children:"Illustrative"})]}),(0,a.jsx)(p,{salaryLabel:d.salaryLabel,defaultSalary:d.salaryPlaceholder})]}),(0,a.jsxs)("div",{className:"flex-1 flex flex-col gap-4",children:[h?.featuredChart&&(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:h.featuredChart,alt:h.chartAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.chartAlt," — Illustrative. Not financial advice."]})})]}),h?.infographic&&(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:h.infographic,alt:h.infographicAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.infographicAlt," — Illustrative."]})})]})]})]})]})]})}function N({variant:e,siteBasePath:t,heroBlock:r}){let d=c[e]??c.default,h=o[e]??null,m=l[e],v=r?.title?.trim()||d.headlineFallback,u=r?.body?.trim()||d.subheadlineFallback,b=r?.primaryCta?g(t,r.primaryCta.href):g(t,d.ctaPrimarySlug),f=r?.primaryCta?.label??d.ctaPrimaryLabel,x=r?.secondaryCta?g(t,r.secondaryCta.href):g(t,d.ctaSecondarySlug),y=r?.secondaryCta?.label??d.ctaSecondaryLabel;return(0,a.jsxs)("section",{className:"fin-hero-band fin-site-hero fin-hero-dark fin-
21370hero-laboratory","aria-label":"Site overview and income estimator",children:[(0,a.jsx)(n.FluidCanvas,{colorA:m.colorA,colorB:m.colorB,intensity:m.intensity,className:"absolute inset-0 z-0"}),(0,a.jsxs)("svg",{className:"pointer-events-none absolute inset-0 z-0 w-full h-full opacity-[0.06]","aria-hidden":!0,xmlns:"http://www.w3.org/2000/svg",children:[(0,a.jsx)("defs",{children:(0,a.jsxs)("pattern",{id:"mol",x:"0",y:"0",width:"80",height:"80",patternUnits:"userSpaceOnUse",children:[(0,a.jsx)("circle",{cx:"8",cy:"8",r:"2",fill:"#7c3aed"}),(0,a.jsx)("circle",{cx:"72",cy:"8",r:"1.5",fill:"#7c3aed"}),(0,a.jsx)("circle",{cx:"40",cy:"40",r:"2.5",fill:"#7c3aed"}),(0,a.jsx)("circle",{cx:"8",cy:"72",r:"1.5",fill:"#7c3aed"}),(0,a.jsx)("circle",{cx:"72",cy:"72",r:"2",fill:"#7c3aed"}),(0,a.jsx)("line",{x1:"8",y1:"8",x2:"40",y2:"40",stroke:"#7c3aed",strokeWidth:"0.5"}),(0,a.jsx)("line",{x1:"72",y1:"8",x2:"40",y2:"40",stroke:"#7c3aed",strokeWidth:"0.5"}),(0,a.jsx)("line",{x1:"8",y1:"72",x2:"40",y2:"40",stroke:"#7c3aed",strokeWidth:"0.5"}),(0,a.jsx)("line",{x1:"72",y1:"72",x2:"40",y2:"40",stroke:"#7c3aed",strokeWidth:"0.5"})]})}),(0,a.jsx)("rect",{width:"100%",height:"100%",fill:"url(#mol)"})]}),(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 55% 50% at 100% 0%, rgba(124,58,237,0.20) 0%, transparent 65%)"}}),(0,a.jsx)(s.motion.div,{className:"pointer-events-none absolute left-[8%] bottom-[25%] z-0 h-72 w-72 rounded-full",style:{background:"radial-gradient(circle, rgba(124,58,237,0.12) 0%, transparent 70%)",filter:"blur(48px)"},animate:{scale:[1,1.38,1],opacity:[.38,.64,.38]},transition:{duration:11,repeat:1/0,ease:"easeInOut"}}),(0,a.jsx)("div",{className:"relative z-[1] mx-auto max-w-7xl px-4 sm:px-6 py-[clamp(4rem,9vw,7rem)]",children:(0,a.jsxs)("div",{className:"flex flex-col gap-10 lg:flex-row lg:items-start lg:gap-14",children:[(0,a.jsxs)("div",{className:"flex-1 space-y-6 lg:max-w-[55%]",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-2",children:[(0,a.jsx)("div",{className:"h-px flex-1",style:{background:"linear-gradient(to right, rgba(124,58,237,0.6), rgba(124,58,237,0.1))"}}),(0,a.jsx)("span",{className:"text-[9.5px] font-bold uppercase tracking-[0.35em] text-[color:var(--site-accent-text)] opacity-80",children:"Abstract"}),(0,a.jsx)("div",{className:"h-px w-6",style:{background:"rgba(124,58,237,0.3)"}})]}),(0,a.jsx)(s.motion.span,{className:"fin-site-hero-badge inline-flex items-center rounded-full border border-[color:color-mix(in_srgb,var(--site-accent)_40%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-accent)_10%,var(--site-bg))] px-3.5 py-1.5 text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)] w-fit",initial:{opacity:0}
21370,animate:{opacity:1},transition:{duration:.4},style:{boxShadow:"0 0 20px rgba(124,58,237,0.22)"},children:d.badge}),(0,a.jsx)(s.motion.h1,{className:"fin-hero-title",initial:{opacity:0,y:14},animate:{opacity:1,y:0},transition:{duration:.5,delay:.07},children:v}),(0,a.jsx)("p",{className:"fin-hero-body leading-relaxed",children:u}),(0,a.jsx)("ul",{className:"space-y-2",children:d.credentialChips.map((e,i)=>(0,a.jsxs)(s.motion.li,{className:"flex items-center gap-2.5 text-[11px] opacity-65",initial:{opacity:0,x:-8},animate:{opacity:.65,x:0},transition:{duration:.35,delay:.15+.06*i},children:[(0,a.jsxs)(s.motion.span,{className:"relative flex-shrink-0 h-3 w-3",animate:{scale:[1,1.5,1],opacity:[.7,.2,.7]},transition:{duration:2.8+.4*i,repeat:1/0,ease:"easeInOut"},children:[(0,a.jsx)("span",{className:"absolute inset-0 rounded-full border border-[color:var(--site-accent)] opacity-60"}),(0,a.jsx)("span",{className:"absolute inset-[3px] rounded-full bg-[color:var(--site-accent)]"})]}),e]},e))}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,a.jsx)(i.default,{href:b,className:"fin-site-hero-cta-primary shimmer-btn",children:f}),(0,a.jsxs)(i.default,{href:x,className:"fin-site-hero-cta-secondary",children:[y," →"]})]}),(0,a.jsx)("div",{className:"mt-4 rounded-xl border border-[color:color-mix(in_srgb,var(--site-accent)_20%,var(--site-border))] overflow-hidden",style:{boxShadow:"0 0 24px -12px rgba(124,58,237,0.18)"},children:d.stats.map((e,i)=>(0,a.jsxs)(s.motion.div,{className:`flex items-center justify-between px-4 py-3 ${i<d.stats.length-1?"border-b border-[color:color-mix(in_srgb,var(--site-border)_50%,transparent)]":""}`,whileHover:{backgroundColor:"color-mix(in srgb, var(--site-accent) 5%, transparent)",transition:{duration:.2}},children:[(0,a.jsx)("span",{className:"text-[11px] opacity-50 font-mono",children:e.label}),(0,a.jsx)("span",{className:"text-[1.1rem] font-bold tabular-nums",style:{color:"var(--site-accent)",textShadow:"0 0 16px rgba(124,58,237,0.55)"},children:e.figure})]},e.label))})]}),(0,a.jsxs)("div",{className:"w-full lg:w-[400px] lg:flex-shrink-0 flex flex-col gap-5",children:[(0,a.jsxs)(s.motion.div,{className:"fin-site-hero-calc-card rounded-[1.75rem] p-5",style:{background:"color-mix(in srgb, var(--site-bg) 52%, transparent)",backdropFilter:"blur(24px)",WebkitBackdropFilter:"blur(24px)",border:"1px solid color-mix(in srgb, var(--site-accent) 22%, var(--site-border))",boxShadow:"0 24px 60px -28px rgba(0,0,0,0.32), 0 0 40px -18px rgba(124,58,237,0.14)"},whileHover:{y:-4,transition:{duration:.3}},children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:"Net Pay Estimator"}),(0,a.jsx)("span",{className:"rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_50%,transparent)] px-2 py-0.5 text-[9.5px] font-medium opacity-50",children:"Illustrative"})]}),(0,a.jsx)(p,{salaryLabel:d.salaryLabel,defaultSalary:d.salaryPlaceholder})]}),h?.featuredChart&&(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:h.featuredChart,alt:h.chartAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.chartAlt," — Illustrative. Not financial advice."]})})]}),h?.secondChart&&(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:h.secondChart,alt:h.secondChartAlt??"Financial data chart",className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.secondChartAlt??"Data chart"," — Illustrative. Not financial advice."]})})]}),h?.infographic&&!h.secondChart&&(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:h.infographic,alt:h.infographicAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[h.infographicAlt," — Illustrative."]})})]})]})]})})]})}function S({variant:e,siteName:t,domain:d,siteBasePath:h,heroBlock:m}){let u=c[e]??c.default,b=o[e]??null,f=l[e]??null,x=m?.title?.trim()||u.headlineFallback,y=m?.body?.trim()||u.subheadlineFallback,w=m?.primaryCta?g(h,m.primaryCta.href):g(h,u.ctaPrimarySlug),_=m?.primaryCta?.label??u.ctaPrimaryLabel,k=m?.secondaryCta?g(h,m.secondaryCta.href):g(h,u.ctaSecondarySlug),j=m?.secondaryCta?.label??u.ctaSecondaryLabel;return(0,a.jsxs)("section",{className:`fin-hero-band fin-site-hero${f?" fin-hero-dark":""}`,"aria-label":"Site overview and income estimator",children:[f&&(0,a.jsx)(n.FluidCanvas,{colorA:f.colorA,colorB:f.colorB,intensity:f.intensity,className:"absolute inset-0 z-0"}),!f&&(0,a.jsx)(r.AmbientOrbs,{intensity:"subtle",variant:"warm"}),(0,a.jsxs)("div",{className:"relative z-[1] mx-auto max-w-7xl px-4 py-[clamp(3.5rem,8vw,6rem)] sm:px-6",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-10 lg:flex-row lg:items-start lg:gap-14 xl:gap-20",children:[(0,a.jsxs)("div",{className:"flex-1 space-y-7 lg:max-w-[52%]",children:[(0,a.jsx)("span",{className:"fin-site-hero-badge inline-flex items-center rounded-full border border-[color:color-mix(in_srgb,var(--site-accent)_30%,var(--site-border))] bg-[color-mix(in_srgb,var(--site-accent)_8%,var(--site-bg))] px-3.5 py-1.5 text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:u.badge}),(0,a.jsx)("h1",{className:"fin-hero-title",children:x}),(0,a.jsx)("p",{className:"fin-hero-body",children:y}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:u.credentialChips.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_45%,transparent)] px-2.5 py-1 text-[10.5px] font-medium opacity-70",children:[(0,a.jsx)(v,{}),e]},e))}),(0,a.jsx)("div",{className:"grid grid-cols-3 gap-3",children:u.stats.map((e,i)=>(0,a.jsxs)(s.motion.div,{className:"rounded-2xl border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_35%,transparent)] px-4 py-4",initial:{opacity:0,y:16}
21370,animate:{opacity:1,y:0},transition:{duration:.5,delay:.12+.07*i,ease:[.16,1,.3,1]},whileHover:{scale:1.04,rotateX:2,rotateY:-3,z:20},style:{transformStyle:"preserve-3d",perspective:800},children:[(0,a.jsx)("p",{className:"text-[1.25rem] font-semibold tabular-nums tracking-tight text-[color:var(--site-accent-text)] leading-none",children:e.figure}),(0,a.jsx)("p",{className:"mt-1.5 text-[11px] leading-snug opacity-55",children:e.label})]},e.label))}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3 pt-1",children:[(0,a.jsx)(i.default,{href:w,className:"fin-site-hero-cta-primary shimmer-btn",children:_}),(0,a.jsxs)(i.default,{href:k,className:"fin-site-hero-cta-secondary",children:[j," →"]})]})]}),(0,a.jsxs)("div",{className:"w-full lg:w-[400px] xl:w-[440px] lg:flex-shrink-0 flex flex-col gap-5",children:[b?.heroPhoto&&(0,a.jsx)(s.motion.div,{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] shadow-[0_8px_40px_-16px_rgba(0,0,0,0.22)]",animate:{y:[0,-10,0]},transition:{duration:7,repeat:1/0,ease:"easeInOut"},whileHover:{scale:1.02},children:(0,a.jsx)("img",{src:b.heroPhoto,alt:b.heroAlt,className:"w-full aspect-[4/3] object-cover",loading:"eager"})}),(0,a.jsxs)("div",{className:"fin-site-hero-calc-card glass-panel rounded-[1.75rem] p-5 shadow-[0_24px_60px_-28px_rgba(0,0,0,0.20)]",children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-[0.22em] text-[color:var(--site-accent-text)]",children:"Net Pay Estimator"}),(0,a.jsx)("span",{className:"rounded-md border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_50%,transparent)] px-2 py-0.5 text-[9.5px] font-medium opacity-50",children:"Illustrative"})]}),(0,a.jsx)(p,{salaryLabel:u.salaryLabel,defaultSalary:u.salaryPlaceholder})]})]})]}),b?.featuredChart&&(0,a.jsx)("div",{className:"mt-12 border-t border-[color:color-mix(in_srgb,var(--site-border)_60%,transparent)] pt-10",children:(0,a.jsxs)("div",{className:`grid gap-5 items-start ${b.secondChart?"lg:grid-cols-3":"lg:grid-cols-2"}`,children:[(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:b.featuredChart,alt:b.chartAlt,className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[b.chartAlt," — Illustrative estimates only. Not financial advice."]})})]}),b.secondChart&&(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:b.secondChart,alt:b.secondChartAlt??"Financial data chart",className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[b.secondChartAlt??"Data chart"," — Illustrative. Not financial advice."]})})]}),b.infographic&&(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] bg-white shadow-[0_8px_32px_-12px_rgba(0,0,0,0.12)]",children:[(0,a.jsx)("img",{src:b.infographic,alt:b.infographicAlt??"Financial infographic",className:"h-auto w-full",loading:"lazy"}),(0,a.jsx)("div",{className:"border-t border-[color:var(--site-border)] px-4 py-2.5",children:(0,a.jsxs)("p",{className:"text-[10.5px] opacity-45",children:[b.infographicAlt??"Infographic"," — Illustrative. Educational only."]})})]})]})})]})]})}e.s(["FinanceSiteHero",0,function(e){switch(e.variant){case"flagship":return(0,a.jsx)(u,{...e});case"analyst":return(0,a.jsx)(b,{...e});case"planning":return(0,a.jsx)(f,{...e});case"coastal":return(0,a.jsx)(x,{...e});case"planner-ca":return(0,a.jsx)(y,{...e});case"aviation":return(0,a.jsx)(w,{...e});case"executive":return(0,a.jsx)(_,{...e});case"counsel":return(0,a.jsx)(k,{...e});case"clinical":return(0,a.jsx)(j,{...e});case"laboratory":return(0,a.jsx)(N,{...e});default:return(0,a.jsx)(S,{...e})}}])},81006,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(846932),s=e.i(772328);let r={clinical:[{icon:"🏥",title:"Physician Loan Strategy",desc:"PSLF, income-driven repayment, and refinancing frameworks for medical debt"},{icon:"📈",title:"Investment Sequencing",desc:"Tax-advantaged account prioritization for attending-level income"},{icon:"🛡️",title:"Disability Protection",desc:"Own-occupation coverage analysis and gap identification"},{icon:"🏦",title:"Retirement Architecture",desc:"Backdoor Roth, 457(b), and defined benefit plan strategies"},{icon:"📋",title:"Contract Economics",desc:"Employment vs independent contractor analysis, signing bonuses"}],engineer:[{icon:"💹",title:"Equity Compensation",desc:"RSU vesting, 83(b) elections, and concentrated stock risk management"},{icon:"🔢",title:"Tax-Efficient Investing",desc:"Mega backdoor Roth, after-tax 401(k), and asset location strategy"},{icon:"🤖",title:"FIRE Planning",desc:"Coast FIRE projections and safe withdrawal rates for tech timelines"},{icon:"📊",title:"Comp Benchmarking",desc:"Total compensation analysis and offer comparison frameworks"},{icon:"🌐",title:"Geographic Arbitrage",desc:"Multi-state tax analysis for remote workers and relocators"}],aviation:[{icon:"✈️",title:"Per Diem Optimization",desc:"Maximize untaxed per diem income and travel expense strategy"},{icon:"⏱️",title:"Mandatory Retirement",desc:"FAA age 65 bridge strategies to Social Security and pension"},{icon:"💰",title:"Crew Tax Strategy",desc:"Federal and state deductions specific to airline professionals"},{icon:"🏥",title:"Income Protection",desc:"Aviation-specific disability insurance and career interruption planning"},{icon:"📈",title:"Union Pension Analysis",desc:"DB pension optimization alongside 401(k) accumulation"}],coastal:[{icon:"🏠",title:"CA Real Estate Strategy",desc:"Prop 13, Prop 19, and 1031 exchange planning for homeowners"},{icon:"🏛️",title:"CA Tax Optimization",desc:"SALT cap strategies, RDPs, and state-specific deductions"},{icon:"📈",title:"Portfolio Design",desc:"Tax-loss harvesting, muni bond allocation, CA after-tax optimization"},{icon:"🌴",title:"Estate & Trust Planning",desc:"Community property, living trusts, and multi-generational transfer"},{icon:"📋",title:"Retirement Income",desc:"Social Security timing, RMDs, and income sequencing for CA residents"}
21370],counsel:[{icon:"⚖️",title:"Law School Debt",desc:"IBR, PSLF, refinancing, and firm-specific repayment analysis"},{icon:"🏛️",title:"Partnership Track",desc:"Equity buy-in financing, K-1 tax planning, deferred compensation"},{icon:"💼",title:"Practice Economics",desc:"BigLaw vs boutique vs solo practice financial modeling"},{icon:"📈",title:"Investment Strategy",desc:"High-income accumulation during peak earning years"},{icon:"📋",title:"Ethics-Aware Planning",desc:"Malpractice, trust accounts, and conflict-of-interest considerations"}],laboratory:[{icon:"🔬",title:"PSLF & Forgiveness",desc:"Qualifying programs for academic and non-profit scientists"},{icon:"📊",title:"Grant & Salary Planning",desc:"NIH salary cap, indirect cost implications, and income modeling"},{icon:"🏦",title:"Academic Retirement Stack",desc:"403(b), 457(b), pension, and TIAA-CREF optimization"},{icon:"💡",title:"IP & Licensing Income",desc:"Patent royalties, licensing agreements, and non-W2 planning"},{icon:"🌐",title:"Career Transition Finance",desc:"Academic-to-industry moves: equity, salary jumps, retirement rollover"}],executive:[{icon:"📊",title:"Equity Event Planning",desc:"RSUs, options, 10b5-1 plans, and blackout period strategy"},{icon:"⏳",title:"Deferred Compensation",desc:"NQDC tax arbitrage, distribution scheduling, counterparty risk"},{icon:"🏛️",title:"Executive Tax Strategy",desc:"AMT planning, SALT cap optimization, and bonus timing"},{icon:"🌳",title:"Estate Architecture",desc:"GRATs, IDGTs, family limited partnerships for wealth transfer"},{icon:"🔐",title:"Corporate Benefits Audit",desc:"SERP, split-dollar life, executive health benefit optimization"}],"planner-ca":[{icon:"📋",title:"Comprehensive Planning",desc:"Cash flow, net worth, and retirement income modeling for CA families"},{icon:"🏠",title:"CA Home Ownership",desc:"Affordability analysis, property tax planning, and Prop 19 strategy"},{icon:"🏦",title:"Retirement Income Design",desc:"Social Security optimization, Roth conversion ladders, and RMDs"},{icon:"📈",title:"Investment Allocation",desc:"Risk-aligned portfolio construction with CA tax-efficiency lens"},{icon:"📜",title:"Estate & Legacy",desc:"Community property, living trusts, and beneficiary optimization"}],analyst:[{icon:"🔢",title:"Portfolio Construction",desc:"Factor-based allocation, sector exposure, and concentration risk"},{icon:"📉",title:"Tax Drag Reduction",desc:"Tax-loss harvesting, asset location, and wash-sale management"},{icon:"💹",title:"Equity Event Optimization",desc:"RSU/options taxation, 83(b), and secondary market timing"},{icon:"🏛️",title:"Deferred Comp Planning",desc:"NQDC scheduling, SERP analysis, counterparty credit assessment"},{icon:"🌍",title:"Global Portfolio",desc:"International diversification, currency risk, and PFIC analysis"}],flagship:[{icon:"🧠",title:"Systems-Based Planning",desc:"Integrated wealth strategy connecting income, tax, investments, and estate"},{icon:"📈",title:"Portfolio Intelligence",desc:"Efficient frontier allocation, factor tilts, and tax-aware rebalancing"},{icon:"🏛️",title:"Advanced Tax Strategy",desc:"Tax alpha identification across accounts, brackets, and life events"},{icon:"🌐",title:"Global Asset Architecture",desc:"Cross-border structures, trust design, and entity optimization"},{icon:"📜",title:"Estate & Legacy Systems",desc:"Dynastic trust planning, philanthropy integration, family governance"}]},n={clinical:{image:"https://media.medicalfinancialadvisor.com/medicalfinancialadvisor/hero_retirement_planning.webp",imageAlt:"Physician couple reviewing retirement projections on a tablet",eyebrow:"Physician Retirement Planning",headline:"Most physicians retire 10 years later than they plan",body:"The wealth gap that opens during training years is real — but so is the catch-up potential when attending income accelerates. A retirement strategy built around your income trajectory can close that gap faster than any generic playbook.",ctaLabel:"Explore retirement planning tools",ctaSlug:"/tools"},engineer:{image:"https://media.engineerfinancial.com/engineerfinancial/hero_rsu_planning.webp",imageAlt:"STEM professional reviewing equity vesting schedule at home office",eyebrow:"Equity Wealth Planning",headline:"RSUs create wealth — but only if you plan around the tax",body:"A four-year RSU cliff vesting schedule at a major tech company can deliver $180–$3
2137000K in annual equity income. Without a withholding and diversification plan, a significant portion disappears to taxes at the wrong time.",ctaLabel:"Use the RSU tax estimator",ctaSlug:"/tools"},aviation:{image:"https://media.aviationfinancialadvisor.com/aviationfinancialadvisor/hero_pilot_retirement.webp",imageAlt:"Retired airline captain enjoying financial freedom outdoors",eyebrow:"Mandatory Retirement Planning",headline:"FAA age 65 isn't the end — but you have to plan for it",body:"Commercial pilots face a hard stop at age 65 under FAA regulations. The bridge between mandatory retirement and Social Security eligibility at 67 requires a specific drawdown strategy that most general financial planners overlook.",ctaLabel:"See the pilot retirement timeline",ctaSlug:"/tools"},coastal:{image:"https://media.cafinancialadvisor.com/cafinancialadvisor_com/hero_ca_wealth_planning.webp",imageAlt:"California couple planning their financial future on a coastal path",eyebrow:"California Wealth Architecture",headline:"California earners face a 50.3% combined marginal rate — plan around it",body:"At $500K+ income, California professionals face one of the highest combined marginal tax rates in the developed world. Strategic income timing, account sequencing, and muni bond allocation can meaningfully reduce your lifetime tax burden.",ctaLabel:"Explore CA tax planning tools",ctaSlug:"/tools"},counsel:{image:"https://media.lawyerfinancialadvisor.com/lawyerfinancialadvisor/hero_attorney_retirement.webp",imageAlt:"Senior attorney reviewing estate planning in elegant home office",eyebrow:"Attorney Wealth Strategy",headline:"Law school debt is a feature, not a bug — if you play it right",body:"Income-driven repayment and PSLF can turn $145K in law school debt into a deliberate wealth-building tool. For attorneys at qualifying non-profits, the math often favors lower payments over aggressive payoff.",ctaLabel:"Run the repayment comparison",ctaSlug:"/tools"},laboratory:{image:"https://media.scientistfinancialadvisor.com/scientistfinancialadvisor/hero_scie
21370ntist_career_transition.webp",imageAlt:"Research scientist weighing academic and industry career options",eyebrow:"Academic-to-Industry Transition",headline:"The academic-to-industry salary jump changes everything — including your taxes",body:"Moving from a $95K postdoc to a $150K industry role means a different tax bracket, loss of PSLF eligibility, and entirely new equity compensation structures. Understanding the financial implications before you move can save tens of thousands.",ctaLabel:"See the transition comparison",ctaSlug:"/tools"},executive:{image:"https://media.clevelfinancial.com/clevelfinancial/hero_executive_planning.webp",imageAlt:"Executive couple reviewing wealth plan with advisor in private banking office",eyebrow:"Executive Wealth Complexity",headline:"C-suite comp creates one-time wealth events that demand precision",body:"A 10b5-1 plan, deferred compensation election, and NQSO exercise all interact with each other and with your tax bracket. Getting the sequencing wrong during a high-liquidity year can cost more than a year of advisor fees.",ctaLabel:"Explore executive comp tools",ctaSlug:"/tools"},"planner-ca":{image:"https://media.financialplannercalifornia.com/financialplannercalifornia/hero_retirement_lifestyle.webp",imageAlt:"California couple enjoying active outdoor retirement lifestyle",eyebrow:"California Retirement Planning",headline:"California retirement takes more planning than most states",body:"State income tax on all retirement distributions, high property values, and Prop 19 implications for passing wealth to the next generation make California retirement one of the most planning-intensive in the country.",ctaLabel:"Use the retirement readiness scorecard",ctaSlug:"/tools"},analyst:{image:"https://media.cafinancialadvisor.net/cafinancialadvisor_net/hero_portfolio_review.webp",imageAlt:"Financial analyst reviewing multi-screen portfolio dashboard",eyebrow:"Operator-Grade Portfolio Intelligence",headline:"Your personal balance sheet deserves the same rigor as your models",body:"Capital allocators spend their careers optimizing risk-adjusted returns for institutions. Applying the same factor-based discipline, tax drag analysis, and scenario modeling to your personal portfolio is the natural extension of that work.",ctaLabel:"Explore portfolio analysis tools",ctaSlug:"/tools"},flagship:{image:"https://media.fenul.com/fenul/hero_portfolio_review.webp",imageAlt:"Systems-based financial planning with integrated portfolio and tax view",eyebrow:"Integrated Wealth Intelligence",headline:"Most financial plans optimize one thing. Integrated planning optimizes the system.",body:"Tax strategy, investment allocation, insurance coverage, and estate architecture interact with each other. A change in one changes the optimal answer in the others. Systems-based financial planning accounts for all of it simultaneously.",ctaLabel:"Explore integrated planning tools",ctaSlug:"/tools"}};e.s(["FinancePageBody",0,function({variant:e,siteBasePath:o}){var l;let c,d=r[e]??[],h=n[e],m=(0,s.useReducedMotion)(),p=[.16,1,.3,1];return 0!==d.length||h?(0,a.jsxs)("div",{children:[d.length>0&&(0,a.jsx)("section",{className:"border-t border-[color:color-mix(in_srgb,var(--site-border)_50%,transparent)] py-16 sm:py-20","aria-label":"Topics and focus areas",children:(0,a.jsxs)("div",{className:"mx-auto max-w-7xl px-4 sm:px-6",children:[(0,a.jsxs)(t.motion.div,{className:"mb-10",initial:{opacity:0,y:14},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-60px"},transition:{duration:.5*!m,ease:p},children:[(0,a.jsx)("p",{className:"gradient-text mb-2 text-[11px] font-semibold uppercase tracking-[0.22em]",children:"What We Cover"}),(0,a.jsx)("h2",{className:"fin-hero-title text-[clamp(1.5rem,3vw,2.25rem)]",children:"Financial intelligence built for your profession"})]}),(0,a.jsx)(t.motion.div,{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-5",style:{perspective:"1000px"},initial:"hidden",whileInView:"visible",viewport:{once:!0,margin:"-50px"},variants:{hidden:{},visible:{transition:{staggerChildren:.06*!m,delayChildren:.05}}},children:d.map(e=>(0,a.jsxs)(t.motion.div,{className:"rounded-2xl border border-[color:var(--site-border)] bg-[color-mix(in_srgb,var(--site-soft)_28%,transparent)] p-5 transition-colors hover:bg-[color-mix(in_srgb,var(--site-soft)_50%,transparent)]",variants:{hidden:{opacity:0,y:16},visible:{opacity:1,y:0}},transition:{duration:.4*!m,ease:p},whileHover:m?{}:{scale:1.04,rotateX:3,rotateY:-3},style:{transformStyle:"preserve-3d"},children:[(0,a.jsx)("span",{className:"mb-3 block text-2xl","aria-hidden":!0,
21370children:e.icon}),(0,a.jsx)("h3",{className:"mb-1.5 text-sm font-semibold leading-snug",children:e.title}),(0,a.jsx)("p",{className:"text-[11.5px] leading-relaxed opacity-55",children:e.desc})]},e.title))})]})}),h&&(0,a.jsx)("section",{className:"border-t border-[color:color-mix(in_srgb,var(--site-border)_50%,transparent)] bg-[color-mix(in_srgb,var(--site-soft)_18%,transparent)] py-16 sm:py-20","aria-label":"Featured insight",children:(0,a.jsx)("div",{className:"mx-auto max-w-7xl px-4 sm:px-6",children:(0,a.jsxs)(t.motion.div,{className:"flex flex-col gap-10 lg:flex-row lg:items-center lg:gap-16",initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-60px"},transition:{duration:.55*!m,ease:p},children:[(0,a.jsxs)("div",{className:"flex-1 space-y-5 lg:max-w-[50%]",children:[(0,a.jsx)("p",{className:"gradient-text text-[11px] font-semibold uppercase tracking-[0.22em]",children:h.eyebrow}),(0,a.jsx)("h2",{className:"fin-hero-title text-[clamp(1.4rem,2.8vw,2rem)] leading-tight",children:h.headline}),(0,a.jsx)("p",{className:"text-[15px] leading-relaxed opacity-70",children:h.body}),(0,a.jsxs)(i.default,{href:(l=h.ctaSlug,c="/"===o?"":o.replace(/\/$/,""),"/"===l?c||"/":`${c}${l}`.replace(/\/+/g,"/")),className:"shimmer-btn inline-flex items-center gap-1.5 rounded-full border border-[color:var(--site-border)] px-4 py-2 text-sm font-medium text-[color:var(--site-accent-text)] transition-all hover:border-[color:var(--site-accent)] hover:opacity-90",children:[h.ctaLabel," ",(0,a.jsx)("span",{"aria-hidden":!0,children:"→"})]})]}),(0,a.jsx)(t.motion.div,{className:"w-full lg:w-[480px] lg:flex-shrink-0",animate:m?{}:{y:[0,-8,0]},transition:{duration:5,ease:"easeInOut",repeat:1/0},children:(0,a.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-[color:var(--site-border)] shadow-[0_12px_48px_-16px_rgba(0,0,0,0.18)] depth-image",children:[(0,a.jsx)("div",{className:"specular-top","aria-hidden":!0}),(0,a.jsx)("img",{src:h.image,alt:h.imageAlt,className:"w-full aspect-video object-cover",loading:"lazy"})]})})]})})})]}):null}])},600951,e=>{"use strict";var a=e.i(618566),i=e.i(271645);e.s(["useMobileMenu",0,function(){let[e,t]=(0,i.useState)(!1),s=(0,a.usePathname)();return(0,i.useEffect)(()=>{t(!1)},[s]),(0,i.useEffect)(()=>{if(!e)return;let a=e=>{"Escape"===e.key&&t(!1)};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[e]),{open:e,toggle:()=>t(e=>!e)}}])},934633,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(468158),s=e.i(600951),r=e.i(271645),n=e.i(846932),o=e.i(772328),l=e.i(310542),c=e.i(895420);e.i(116233);var d=e.i(365587),h=e.i(525320),m=e.i(473092);let p=(0,m.advisoryFirmCredentials)("fenulwealthmanagement.com");function g(){let e=(0,r.useRef)(null),i=(0,r.useRef)(0),t=(0,o.useReducedMotion)(),s=(0,r.useRef)(t);return(0,r.useEffect)(()=>{s.current=t},[t]),(0,r.useEffect)(()=>{let a=e.current;if(!a)return;let t=a.getContext("2d");if(!t)return;let r=0,n=0,o=[];function l(){r=a.offsetWidth,n=a.offsetHeight,a.width=r*devicePixelRatio,a.height=n*devicePixelRatio,t.scale(devicePixelRatio,devicePixelRatio)}let c=0;function d(){t.clearRect(0,0,r,n),c+=1;let e=r/2,a=n/2,l=[];for(let i of o){i.az+=i.speed;let t=Math.cos(i.ax+15e-5*c),s=Math.sin(i.ax+15e-5*c),o=Math.cos(i.ay+1e-4*c),d=Math.sin(i.ay+1e-4*c),h=Math.cos(i.az),m=Math.sin(i.az),p=t*h-s*d*m,g=s*h+t*d*m,v=-o*m,u=function(e,a,i,t,s){let o=420/(420+280*i);return{x:t+e*o*Math.min(r,n)*.38,y:s+a*o*Math.min(r,n)*.38,scale:o}}(p,g,v,e,a);l.push({sx:u.x,sy:u.y,sz:v,size:i.size*u.scale})}for(let e=0;e<l.length;e++)for(let a=e+1;a<l.length;a++){let i=l[e].sx-l[a].sx,s=l[e].sy-l[a].sy,o=Math.sqrt(i*i+s*s),c=.28*Math.min(r,n);if(o<c){let i=(1-o/c)*.22;t.beginPath(),t.moveTo(l[e].sx,l[e].sy),t.lineTo(l[a].sx,l[a].sy),t.strokeStyle=`rgba(42, 125, 85, ${i})`,t.lineWidth=.8,t.stroke()}}for(let e of l){let a=t.createRadialGradient(e.sx,e.sy,0,e.sx,e.sy,5*e.size);a.addColorStop(0,"rgba(42, 125, 85, 0.6)"),a.addColorStop(.4,"rgba(42, 125, 85, 0.15)"),a.addColorStop(1,"rgba(42, 125, 85, 0)"),t.beginPath(),t.arc(e.sx,e.sy,5*e.size,0,2*Math.PI),t.fillStyle=a,t.fill(),t.beginPath(),t.arc(e.sx,e.sy,e.size,0,2*Math.PI),t.fillStyle="rgba(42, 125, 85, 0.85)",t.fill()}s.current||(i.current=requestAnimationFrame(d))}let h=new ResizeObserver(()=>{(a.offsetWidth!==r||a.offsetHeight!==n)&&(l(),s.current&&d())});return h.observe(a),l(),o=Array.from({length:38},()=>({ax:(Math.random()-.5)*Math.PI*2,ay:(Math.random()-.5)*Math.PI*2,az:0,speed:5e-4+.001*Math.random(),size:1.2+2.8*Math.random(),phase:Math.random()*Math.PI*2})),d(),()=>{h.disconnect(),cancelAnimationFrame(i.current)}},[]),(0,a.jsx)("canvas",{ref:e,className:"fwm-orbit-canvas","aria-hidden":!0})}function v(e){return Number(e.toFixed(4))}function u({segments:e,label:i,value:t}){let[s,n]=(0,r.useState)(null),o=e.reduce((e,a)=>e+a.pct,0),l=-Math.PI/2,c=e.map((e,a)=>{let i=e.pct/o*Math.PI*2,t=l,r=l+=i,n=(t+r)/2,c=s===a,d=6*!!c,h=Math.cos(n)*d,m=Math.sin(n)*
21370d,p=v(80+h+58*Math.cos(t)),g=v(80+m+58*Math.sin(t)),u=v(80+h+58*Math.cos(r)),b=v(80+m+58*Math.sin(r)),f=v(80+h+36*Math.cos(t)),x=v(80+m+36*Math.sin(t)),y=v(80+h+36*Math.cos(r)),w=v(80+m+36*Math.sin(r)),_=+(i>Math.PI),k=`M ${p} ${g} A 58 58 0 ${_} 1 ${u} ${b} L ${y} ${w} A 36 36 0 ${_} 0 ${f} ${x} Z`,j=v(80+h+58*Math.cos(t)),N=v(80+m+14+58*Math.sin(t)),S=v(80+h+58*Math.cos(r)),A=v(80+m+14+58*Math.sin(r)),z=v(80+h+36*Math.cos(t)),C=v(80+m+14+36*Math.sin(t)),M=v(80+h+36*Math.cos(r)),P=v(80+m+14+36*Math.sin(r));return{topPath:k,bottomPath:`M ${j} ${N} A 58 58 0 ${_} 1 ${S} ${A} L ${M} ${P} A 36 36 0 ${_} 0 ${z} ${C} Z`,color:e.color,name:e.name,pct:e.pct,midAngle:n,ox:h,oy:m,isHovered:c}});return(0,a.jsxs)("div",{className:"fwm-donut-wrap",children:[(0,a.jsxs)("svg",{viewBox:"0 0 160 160",className:"fwm-donut-svg",role:"img","aria-label":`${i} chart`,children:[(0,a.jsx)("defs",{children:(0,a.jsx)("filter",{id:"donut-shadow",x:"-20%",y:"-20%",width:"140%",height:"140%",children:(0,a.jsx)("feDropShadow",{dx:"0",dy:"3",stdDeviation:"4",floodColor:"rgba(0,0,0,0.18)"})})}),c.map((e,i)=>(0,a.jsx)("path",{d:e.bottomPath,fill:`color-mix(in srgb, ${e.color} 55%, #000)`,opacity:"0.7"},`b-${i}`)),c.map((i,t)=>{let s=-Math.PI/2+e.slice(0,t).reduce((e,a)=>e+a.pct,0)/o*Math.PI*2,r=s+e[t].pct/o*Math.PI*2;if(0>Math.sin((s+r)/2))return null;let n=v(80+i.ox+58*Math.cos(s)),l=v(80+i.oy+58*Math.sin(s)),c=v(80+i.ox+58*Math.cos(r)),d=v(80+i.oy+58*Math.sin(r)),h=+(r-s>Math.PI);return(0,a.jsx)("path",{d:`M ${n} ${l} A 58 58 0 ${h} 1 ${c} ${d} L ${c} ${d+14} A 58 58 0 ${h} 0 ${n} ${l+14} Z`,fill:`color-mix(in srgb, ${i.color} 65%, #000)`,opacity:"0.6"},`s-${t}`)}),c.map((e,i)=>(0,a.jsx)("path",{d:e.topPath,fill:e.color,filter:"url(#donut-shadow)",style:{cursor:"pointer",transition:"opacity 0.15s"},opacity:e.isHovered?1:.92,onMouseEnter:()=>n(i),onMouseLeave:()=>n(null)},`t-${i}`)),(0,a.jsx)("text",{x:80,y:75,textAnchor:"middle",dominantBaseline:"middle",className:"fwm-donut-label-value",children:t}),(0,a.jsx)("text",{x:80,y:92,textAnchor:"middle",dominantBaseline:"middle",className:"fwm-donut-label-name",children:null!==s?e[s].name:i})]}),(0,a.jsx)("div",{className:"fwm-donut-legend",children:e.map((e,i)=>(0,a.jsxs)("div",{className:`fwm-donut-legend-item ${s===i?"fwm-donut-legend-item--active":""}`,onMouseEnter:()=>n(i),onMouseLeave:()=>n(null),children:[(0,a.jsx)("span",{className:"fwm-donut-legend-dot",style:{background:e.color}}),(0,a.jsx)("span",{className:"fwm-donut-legend-label",children:e.name}),(0,a.jsxs)("span",{className:"fwm-donut-legend-pct",children:[e.pct,"%"]})]},i))})]})}function b({bars:e}){let i=Math.max(...e.map(e=>e.value)),t=50*e.length+14+10;return(0,a.jsxs)("svg",{viewBox:`0 0 ${t} 158`,className:"fwm-bar-svg",role:"img","aria-label":"Growth chart",children:[(0,a.jsxs)("defs",{children:[(0,a.jsxs)("linearGradient",{id:"bar-grad",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,a.jsx)("stop",{offset:"0%",stopColor:"#2a7d55"}),(0,a.jsx)("stop",{offset:"100%",stopColor:"#1a5c3a"})]}),(0,a.jsxs)("linearGradient",{id:"bar-side",x1:"0",y1:"0",x2:"1",y2:"0",children:[(0,a.jsx)("stop",{offset:"0%",stopColor:"#1a5c3a"}),(0,a.jsx)("stop",{offset:"100%",stopColor:"#0f3d26"})]})]}),e.map((e,t)=>{let s=e.value/i*120,r=14+50*t,n=120-s;return(0,a.jsxs)("g",{children:[(0,a.jsx)("rect",{x:r,y:n,width:36,height:s,fill:"url(#bar-grad)",rx:"2",ry:"2"}),(0,a.jsx)("polygon",{points:`${r},${n} ${r+36},${n} ${r+36+10},${n-10} ${r+10},${n-10}`,fill:"color-mix(in srgb, #2a7d55 85%, white)"}),(0,a.jsx)("polygon",{points:`${r+36},${n} ${r+36+10},${n-10} ${r+36+10},${n+s-10} ${r+36},${n+s}`,fill:"url(#bar-side)"}),(0,a.jsx)("text",{x:r+18,y:n-10-4,textAnchor:"middle",fontSize:"9",fontWeight:"600",fill:"#2a7d55",children:e.label}),(0,a.jsx)("text",{x:r+18,y:144,textAnchor:"middle",fontSize:"8",fill:"#6b7280",children:e.year})]},t)})]})}function f(e,a){let i="/"===e?"":e.replace(/\/$/,"");return"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}function x({siteBasePath:e,currentSlug:t}){let{open:r,toggle:n}=(0,s.useMobileMenu)(),o=(s,r)=>(0,a.jsx)(i.default,{href:f(e,s),className:"fwm-nav-link","aria-current":t===s?"page":void 0,children:r});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("nav",{className:"fwm-nav","aria-label":"Primary",children:[(0,a.jsxs)("div",{className:"fwm-nav-inner",children:[(0,a.jsxs)(i.default,{href:f(e,"/"),className:"fwm-nav-brand",children:[(0,a.jsxs)("svg",{width:"28",height:"18",viewBox:"0 0 28 18",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,
21370children:[(0,a.jsx)("polyline",{points:"1,15 7,9 12,12 19,5 25,2",strokeWidth:"1.8"}),(0,a.jsx)("circle",{cx:"25",cy:"2",r:"2.2",fill:"currentColor",stroke:"none"})]}),(0,a.jsx)("span",{children:"Fenul Wealth"})]}),(0,a.jsxs)("div",{className:"fwm-nav-links",children:[o("/tools","Tools"),o("/about","About"),o("/blog","Guides")]}),(0,a.jsxs)("button",{type:"button",className:"fwm-menu-btn","aria-expanded":r,"aria-controls":"fwm-mobile-menu",onClick:n,children:[(0,a.jsx)("span",{className:"fwm-menu-bars","aria-hidden":!0}),(0,a.jsx)("span",{children:r?"Close":"Menu"})]}),(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"fwm-nav-cta",children:"Book a Conversation"})]}),r?(0,a.jsxs)("div",{id:"fwm-mobile-menu",className:"fwm-mobile",children:[(0,a.jsx)(i.default,{href:f(e,"/tools"),className:"fwm-mobile-link",children:"Tools"}),(0,a.jsx)(i.default,{href:f(e,"/about"),className:"fwm-mobile-link",children:"About"}),(0,a.jsx)(i.default,{href:f(e,"/blog"),className:"fwm-mobile-link",children:"Guides"}),(0,a.jsx)(i.default,{href:f(e,"/services"),className:"fwm-mobile-link",children:"Services"}),(0,a.jsx)(i.default,{href:f(e,"/book-session"),className:"fwm-mobile-link",children:"Book a one-hour session"})]}):null]}),(0,a.jsx)("div",{className:"fwm-sticky",children:(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"fwm-btn-primary",children:"Book a Conversation"})}),(0,a.jsx)("div",{id:"main-content",tabIndex:-1})]})}function y({siteBasePath:e}){return(0,a.jsx)("footer",{className:"fwm-footer",role:"contentinfo",children:(0,a.jsxs)("div",{className:"fwm-footer-inner",children:[(0,a.jsxs)("div",{className:"fwm-footer-brand-block",children:[(0,a.jsx)("p",{className:"fwm-footer-brand",children:"Fenul Wealth Management"}),(0,a.jsx)("p",{className:"fwm-footer-tagline",children:"Integrated financial clarity for professionals who have built wealth worth protecting."})]}),(0,a.jsxs)("nav",{className:"fwm-footer-links","aria-label":"Footer navigation",children:[(0,a.jsx)(i.default,{href:f(e,"/tools"),children:"Tools"}),(0,a.jsx)(i.default,{href:f(e,"/about"),children:"About"}),(0,a.jsx)(i.default,{href:f(e,"/blog"),children:"Guides"}),(0,a.jsx)(i.default,{href:f(e,"/services"),children:"Services"}),(0,a.jsx)(i.default,{href:f(e,"/contact"),children:"Contact"}),(0,a.jsx)(i.default,{href:f(e,"/privacy"),children:"Privacy"}),(0,a.jsx)(i.default,{href:f(e,"/terms"),children:"Terms"}),(0,a.jsx)(i.default,{href:f(e,"/disclaimer"),children:"Disclaimer"}),(0,a.jsx)(i.default,{href:f(e,"/editorial-policy"),children:"Editorial Policy"}),(0,a.jsx)(i.default,{href:f(e,"/editorial-team"),children:"Editorial Team"})]}),p?(0,a.jsxs)("p",{className:"fwm-footer-reg",children:[(0,m.advisoryFirmCredentialLine)(p)," Office: ",p.address,"."," ",(0,a.jsxs)("a",{href:p.verifyUrl,target:"_blank",rel:"noopener noreferrer",children:["Check the public registration record for CRD #",p.crd," (opens in a new tab)"]}),"."]}):null,(0,a.jsx)("p",{className:"fwm-footer-disclaimer",children:"Educational content only. Fenul Wealth Management does not provide personalized investment advice. No fiduciary or client relationship is formed by viewing this site. All calculator outputs are illustrative and not a guarantee of future results. Review our full disclosures before making financial decisions."})]})})}let w=["Cash flow","Tax","Investments","Estate","Risk","Decisions"];function _(){let e=w.map((e,a)=>{let i=(-90+60*a)*Math.PI/180;return{label:e,x:240+168*Math.cos(i),y:240+168*Math.sin(i),a:i}}),i=e.map(e=>`${e.x.toFixed(1)},${e.y.toFixed(1)}`).join(" ");return(0,a.jsxs)("figure",{className:"fwm-hex","aria-labelledby":"fwm-hex-cap",children:[(0,a.jsxs)("svg",{viewBox:"0 0 480 480",role:"img","aria-labelledby":"fwm-hex-t fwm-hex-d",children:[(0,a.jsx)("title",{id:"fwm-hex-t",children:"Six planning areas, one plan"}),(0,a.jsx)("desc",{id:"fwm-hex-d",children:"Cash flow, tax, investments, estate, risk and decisions, each connected to a single plan at the centre."}),(0,a.jsx)("polygon",{points:i,className:"fwm-hex-ring"}),e.map(e=>(0,a.jsx)("line",{x1:240,y1:240,x2:e.x,y2:e.y,className:"fwm-hex-spoke"},`s-${e.label}`)),(0,a.jsx)("circle",{cx:240,cy:240,r:54,className:"fwm-hex-core"}),(0,a.jsx)("circle",{cx:240,cy:240,r:70,className:"fwm-hex-halo"}),(0,a.jsx)("text",{x:240,y:236,textAnchor:"middle",className:"fwm-hex-core-t",children:"Your"}),(0,a.jsx)("text",{x:240,y:260,textAnchor:"middle",className:"fwm-hex-core-t",children:"plan"}),e.map(e=>{let i=Math.cos(e.a)>
21370.2,t=-.2>Math.cos(e.a),s=-.2>Math.sin(e.a)?-18:Math.sin(e.a)>.2?30:5;return(0,a.jsxs)("g",{children:[(0,a.jsx)("circle",{cx:e.x,cy:e.y,r:9,className:"fwm-hex-node"}),(0,a.jsx)("text",{x:e.x+(i?16:t?-16:0),y:e.y+s,textAnchor:i?"start":t?"end":"middle",className:"fwm-hex-label",children:e.label})]},e.label)})]}),(0,a.jsx)("figcaption",{id:"fwm-hex-cap",className:"fwm-hex-cap",children:"Six areas that usually sit with six different people, planned as one."})]})}e.s(["FWM_ADVISOR_REFERRAL_SLUG",0,"/find-advisor","FenulWealthManagementContentPage",0,function({page:e,siteBasePath:i="",siteKey:s,siteName:r}){let n="/"===i?void 0:i;return(0,a.jsxs)("div",{className:"fwm-shell shell-fwm fwm-content-shell",children:[(0,a.jsx)(t.SkipToContent,{}),(0,a.jsx)(x,{siteBasePath:i,currentSlug:e.slug}),(0,a.jsx)("div",{className:"fwm-ambient-layer","aria-hidden":!0,children:(0,a.jsx)(g,{})}),(0,a.jsx)("div",{className:"fwm-ambient-gradient","aria-hidden":!0}),(0,a.jsx)("main",{className:"fwm-content-main",children:(0,a.jsx)(d.BlockRenderer,{blocks:e.blocks.map(e=>"contrast"===e.surface?{...e,surface:"muted"}:e),pageSlug:e.slug,pageTitle:e.title,pathPrefix:n,siteKey:s,siteName:r,visualVariant:"finance"})}),(0,a.jsx)(y,{siteBasePath:i})]})},"FenulWealthManagementPage",0,function({siteBasePath:e=""}){let s=(0,r.useRef)(null),{scrollYProgress:d}=(0,l.useScroll)({target:s,offset:["start start","end start"]}),v=(0,c.useTransform)(d,[0,1],["0%","22%"]),w=(0,o.useReducedMotion)(),k=[.16,1,.3,1];return(0,a.jsxs)("div",{className:"fwm-shell shell-fwm",ref:s,children:[(0,a.jsx)(t.SkipToContent,{}),(0,a.jsx)(x,{siteBasePath:e,currentSlug:"/"}),(0,a.jsxs)("section",{className:"fwm-hero","aria-label":"Hero",children:[(0,a.jsxs)(n.motion.div,{className:"fwm-hero-canvas-wrap",style:w?{}:{y:v},children:[(0,a.jsx)(g,{}),(0,a.jsx)("div",{className:"fwm-hero-canvas-gradient","aria-hidden":!0})]}),(0,a.jsx)("div",{className:"fwm-hero-content",children:(0,a.jsxs)("div",{className:"fwm-hero-grid",children:[(0,a.jsxs)("div",{className:"fwm-hero-inner fwm-rise",children:[(0,a.jsxs)("h1",{className:"fwm-hero-title",children:["Every piece of your financial life, ",(0,a.jsx)("em",{children:"unified."})]}),(0,a.jsx)("p",{className:"fwm-hero-body",children:"Fenul Wealth Management integrates investment strategy, tax architecture, estate design, and income planning into a single, cohesive plan — so you can make your most important decisions with total clarity."}),(0,a.jsxs)("div",{className:"fwm-hero-ctas",children:[(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"fwm-btn-primary",children:"Start your wealth plan"}),(0,a.jsx)(i.default,{href:f(e,"/tools"),className:"fwm-btn-ghost",children:"Explore calculators"})]}),p?(0,a.jsx)("p",{className:"fwm-hero-reg",children:(0,m.advisoryFirmCredentialLine)(p)}):null]}),(0,a.jsx)(_,{})]})})]}),(0,a.jsx)("section",{className:"fwm-section fwm-section--dark","aria-label":"The problem",children:(0,a.jsx)("div",{className:"fwm-container",children:(0,a.jsxs)(n.motion.div,{className:"fwm-problem-grid",initial:{opacity:0,y:22},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-80px"},transition:{duration:.6,ease:k},children:[(0,a.jsxs)("div",{className:"fwm-problem-text",children:[(0,a.jsx)("p",{className:"fwm-eyebrow",children:"The Problem"}),(0,a.jsx)("h2",{className:"fwm-section-title",children:"Fragmented wealth is the most expensive kind"}),(0,a.jsx)("p",{className:"fwm-body-text",children:"Most high earners have a CPA, a 401(k) manager, and maybe a brokerage account advisor — but none of them are coordinating. The result: missed Roth conversion windows, unoptimized RSU timing, duplicate risk exposure, and an estate that will spend decades in probate."}),(0,a.jsx)("p",{className:"fwm-body-text",children:"You keep working not because you have to — but because no one has shown you precisely when you can stop."})]}),(0,a.jsx)("div",{className:"fwm-problem-list",children:[{n:"01",title:"Fragmented management",body:"Multiple advisors, accounts, and custodians with no coordination — leading to overlap, tax inefficiency, and missed signals."},{n:"02",title:"Working longer than necessary",body:"Without a clear retirement number and income model, professionals stay in roles years past when their plan could have freed them."},{n:"03",title:"Underestimating tax drag",body:"Distributions, RSU vesting, and estate transfers all carry tax consequences that erode compounding without integrated planning."},{n:"04",title:"Generational wealth decay",body:"Without trust structures and beneficiary coordination, more of what you built can be lost to taxes, fees and delay before it reaches the next generation."}].map(e=>(0,a.jsxs)(n.motion.div,{className:"fwm-mistake-card",whileHover:{scale:1.02,x:4},transition:{type:"spring",stiffness:300},children:[(0,a.jsx)("span",{className:"fwm-mistake-n","aria-hidden":!0,
21370children:e.n}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"fwm-mistake-title",children:e.title}),(0,a.jsx)("p",{className:"fwm-mistake-body",children:e.body})]})]},e.n))})]})})}),(0,a.jsx)("section",{className:"fwm-section","aria-label":"The solution",children:(0,a.jsxs)("div",{className:"fwm-container",children:[(0,a.jsxs)("div",{className:"fwm-solution-header",children:[(0,a.jsx)("p",{className:"fwm-eyebrow",children:"The Total Wealth Solution"}),(0,a.jsx)("h2",{className:"fwm-section-title fwm-section-title--centered",children:"One integrated plan for every dimension of your wealth"})]}),(0,a.jsx)("div",{className:"fwm-pillars-grid",children:[{icon:"◈",title:"Cash Flow Architecture",body:"Build a precise income engine that sustains your lifestyle through every phase — career peak, transition, and legacy."},{icon:"⬡",title:"Tax Efficiency Stack",body:"Layer Roth conversions, deferred compensation timing, and estate positioning to protect compounding from unnecessary drag."},{icon:"◎",title:"Investment Cohesion",body:"Unify scattered accounts — 401(k)s, IRAs, brokerage — into a single risk-managed portfolio aligned with your timeline."},{icon:"△",title:"Estate & Legacy Design",body:"Protect wealth across generations with trust structures, beneficiary optimization, and philanthropic frameworks."},{icon:"◇",title:"Risk Architecture",body:"Model failure scenarios — disability, longevity, sequence-of-returns — with protective measures calibrated to your exposure."},{icon:"○",title:"Decision Framework",body:"Clear, scenario-visualized plans so you can move confidently at every inflection point — without second-guessing."}].map((e,i)=>(0,a.jsxs)(n.motion.div,{className:"fwm-pillar-card",initial:{opacity:0,y:18},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-50px"},transition:{duration:.5,delay:.08*i,ease:k},whileHover:{scale:1.04,rotateX:2,rotateY:-2},style:{transformStyle:"preserve-3d"},children:[(0,a.jsx)("span",{className:"fwm-pillar-icon","aria-hidden":!0,children:e.icon}),(0,a.jsx)("h3",{className:"fwm-pillar-title",children:e.title}),(0,a.jsx)("p",{className:"fwm-pillar-body",children:e.body})]},e.title))})]})}),(0,a.jsx)("section",{className:"fwm-section fwm-section--accent","aria-label":"Portfolio model",children:(0,a.jsxs)("div",{className:"fwm-container",children:[(0,a.jsx)("p",{className:"fwm-eyebrow fwm-eyebrow--light",children:"Scenario Visualization"}),(0,a.jsx)("h2",{className:"fwm-section-title fwm-section-title--light fwm-section-title--centered",children:"See your wealth as a system, not a number"}),(0,a.jsxs)(n.motion.div,{className:"fwm-charts-row",initial:{opacity:0,y:24},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-80px"},transition:{duration:.65,ease:k},children:[(0,a.jsxs)(n.motion.div,{className:"fwm-chart-card",whileHover:w?{}:{scale:1.02,rotateX:1,transition:{duration:.22}},style:{transformStyle:"preserve-3d"},children:[(0,a.jsx)("p",{className:"fwm-chart-title",children:"Optimized Asset Allocation"}),(0,a.jsx)(u,{segments:[{pct:38,color:"#2a7d55",name:"Growth"},{pct:24,color:"#4aab7a",name:"Income"},{pct:18,color:"#1a5c3a",name:"Real Assets"},{pct:12,color:"#86efac",name:"Alternatives"},{pct:8,color:"#cde8d9",name:"Cash Reserve"}],label:"Example",value:"100%"}),(0,a.jsx)("p",{className:"fwm-chart-caption",children:"An example mix that adds up to 100%. Not a recommendation and not a model of any client’s portfolio."})]}),(0,a.jsxs)(n.motion.div,{className:"fwm-chart-card",whileHover:w?{}:{scale:1.02,rotateX:1,transition:{duration:.22}},style:{transformStyle:"preserve-3d"},children:[(0,a.jsx)("p",{className:"fwm-chart-title",children:"What 7% a year does to $1,000,000"}),(0,a.jsx)("div",{className:"fwm-bar-wrap",children:(0,a.jsx)(b,{bars:[{label:"$1.4M",value:36,year:"Y5"},{label:"$2.0M",value:51,year:"Y10"},{label:"$2.8M",value:71,year:"Y15"},{label:"$3.9M",value:100,year:"Y20"}]})}),(0,a.jsx)("p",{className:"fwm-chart-caption",children:"Arithmetic only: $1,000,000 growing 7% a year with no additions, before fees and taxes. It is not a forecast and not a result for any client."})]})]})]})}),(0,a.jsx)("section",{className:"fwm-section","aria-label":"Process",children:(0,a.jsxs)("div",{className:"fwm-container",children:[(0,a.jsx)("p",{className:"fwm-eyebrow",children:"How It Works"}),(0,a.jsx)("h2",{className:"fwm-section-title",children:"From conversation to clarity"}),(0,a.jsx)("div",{className:"fwm-process-track",children:[{step:"01",title:"Discovery conversation",body:"A no-obligation conversation. We listen to your situation, goals, and concerns. No pitch deck."},{step:"02",title:"Full financial audit",body:"We map every account, liability, tax exposure, and insurance gap — across all custodians."},{step:"03",title:"Integrated plan delivery",body:"You receive a scenario-visualized plan covering a retirement timeline, an income model, and tax considerations."},{step:"04",title:"Ongoing coordination",body:"Quarterly reviews, proactive tax-event monitoring, and adjustments as your life changes."}].map((e,i)=>(0,a.jsxs)(n.motion.div,{className:"fwm-process-step",initial:{opacity:0,x:-18},whileInView:{opacity:1,x:0},viewport:{once:!0,margin:"-60px"},transition:{duration:.5,delay:.1*i,ease:k},whileHover:w?{}:{x:8,transition:{duration:.2}},children:[(0,a.jsx)("div",{className:"fwm-process-step-num","aria-hidden":!0,
21370children:e.step}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"fwm-process-title",children:e.title}),(0,a.jsx)("p",{className:"fwm-process-body",children:e.body})]})]},e.step))})]})}),p?(0,a.jsx)("section",{className:"fwm-section","aria-label":"Registration and credentials",children:(0,a.jsxs)("div",{className:"fwm-container",children:[(0,a.jsx)("p",{className:"fwm-eyebrow",children:"Registered and verifiable"}),(0,a.jsx)("h2",{className:"fwm-section-title",children:"Check us on the public record"}),(0,a.jsxs)("p",{className:"fwm-body-text",children:[p.legalName,"is an investment adviser registered with the State of California. Every fact below is on the regulator’s public record, so you can confirm it before you speak to anyone."]}),(0,a.jsxs)("dl",{className:"fwm-creds",children:[(0,a.jsxs)("div",{className:"fwm-cred",children:[(0,a.jsx)("dt",{children:"Firm CRD number"}),(0,a.jsx)("dd",{children:p.crd})]}),(0,a.jsxs)("div",{className:"fwm-cred",children:[(0,a.jsx)("dt",{children:"Registered in California since"}),(0,a.jsx)("dd",{children:p.registeredSince})]}),(0,a.jsxs)("div",{className:"fwm-cred",children:[(0,a.jsx)("dt",{children:"Registered with"}),(0,a.jsx)("dd",{children:"State of California"})]}),(0,a.jsxs)("div",{className:"fwm-cred",children:[(0,a.jsx)("dt",{children:"Office"}),(0,a.jsx)("dd",{children:p.address})]})]}),(0,a.jsxs)("p",{className:"fwm-creds-note",children:[p.registrationNote," ",(0,a.jsx)("a",{href:p.verifyUrl,target:"_blank",rel:"noopener noreferrer",children:"Open the public registration record (opens in a new tab)"}),"."]})]})}):null,(0,a.jsx)("section",{className:"fwm-section fwm-cta-section","aria-label":"Contact",children:(0,a.jsx)("div",{className:"fwm-container",children:(0,a.jsxs)(n.motion.div,{className:"fwm-cta-block",initial:{opacity:0,y:22},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.65,ease:k},children:[(0,a.jsx)(g,{}),(0,a.jsxs)("div",{className:"fwm-cta-content",children:[(0,a.jsx)("p",{className:"fwm-eyebrow fwm-eyebrow--light",children:"Ready to start?"}),(0,a.jsxs)("h2",{className:"fwm-section-title fwm-section-title--light",children:["It all starts with",(0,a.jsx)("br",{}),"a conversation."]}),(0,a.jsx)("p",{className:"fwm-body-text fwm-body-text--light",children:"No obligation. No pitch. Just an honest conversation about where you are and what a fully integrated plan could do for your timeline."}),(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"fwm-btn-primary fwm-btn-primary--lg",children:"Book your discovery call"}),(0,a.jsxs)("p",{className:"fwm-cta-alt",children:["Want a time on the calendar?"," ",(0,a.jsxs)(i.default,{href:f(e,"/book-session"),children:["Book a one-hour session ($",h.ADVISORY_SESSION.priceUsd,")"]})]})]})]})})}),(0,a.jsx)(y,{siteBasePath:e})]})}])},814527,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(468158),s=e.i(600951),r=e.i(271645),n=e.i(846932),o=e.i(772328);e.i(116233);var l=e.i(365587);let c=(0,e.i(525320).advisorNiche)("fenulcapitalinvestment.com").specialty;function d(){let e=(0,r.useRef)(null),i=(0,r.useRef)(0),t=(0,o.useReducedMotion)(),s=(0,r.useRef)(t);return(0,r.useEffect)(()=>{s.current=t},[t]),(0,r.useEffect)(()=>{let a=e.current;if(!a)return;let t=a.getContext("2d");if(!t)return;let r=0,n=0,o=["#3fb0a0","#5b8bd6","#6fa78a","#8b93a7"],l=[];function c(){r=a.offsetWidth,n=a.offsetHeight,a.width=r*devicePixelRatio,a.height=n*devicePixelRatio,t.setTransform(devicePixelRatio,0,0,devicePixelRatio,0,0)}let d=0;function h(){t.clearRect(0,0,r,n),t.strokeStyle="rgba(139,147,167,0.06)",t.lineWidth=1;for(let e=0;e<=14;e++){let a=r/14*e;t.beginPath(),t.moveTo(a,0),t.lineTo(a,n),t.stroke()}for(let e=0;e<=8;e++){let a=n/8*e;t.beginPath(),t.moveTo(0,a),t.lineTo(r,a),t.stroke()}d+=1,l.forEach((e,a)=>{e.drift+=e.speed;let i=e.points.length,s=r/(i-1);t.beginPath();for(let r=0;r<i;r++){let o=(r+.3*e.drift)%i,l=Math.floor(o),c=(l+1)%i,h=o-l,m=e.points[l]*(1-h)+e.points[c]*h,p=n*e.y0+m*n*e.amp*4+Math.sin(.006*d+.15*r+a)*n*e.amp,g=r*s;0===r?t.moveTo(g,p):t.lineTo(g,p)}t.strokeStyle=o[a%o.length],t.globalAlpha=.32,t.lineWidth=1.4,t.stroke(),t.globalAlpha=1;let l=e.points[Math.floor(.3*e.drift)%i],c=n*e.y0+l*n*e.amp*4+Math.sin(.006*d+a)*n*e.amp,h=t.createRadialGradient(r-40,c,0,r-40,c,22);h.addColorStop(0,`${o[a%o.length]}aa`),h.addColorStop(1,`${o[a%o.length]}00`),t.beginPath(),t.arc(r-40,c,22,0,2*Math.PI),t.fillStyle=h,t.fill(),t.beginPath(),t.arc(r-40,c,2.5,0,2*Math.PI),t.fillStyle=o[a%o.length],t.fill()}),s.current||(i.current=requestAnimationFrame(h))}let m=new ResizeObserver(()=>{(a.offsetWidth!==r||a.offsetHeight!==n)&&(c(),s.current&&h())});return m.observe(a),c(),l=Array.from({length:4},(e,a)=>({points:Array.from({length:140},()=>Math.random()-.5),y0:.2+.2*a,amp:.06+.05*Math.random(),speed:.15+.2*Math.random(),drift:0})),h(),()=>{m.disconnect(),cancelAnimationFrame(i.current)}},[]),(0,a.jsx)("canvas",{ref:e,className:"fcx-pulse-canvas","aria-hidden":!0})}let h=(e,a,i=1e4)=>i*(1+e)**a,m=e=>
21370`$${Math.round(e).toLocaleString("en-US")}`,p=(e,a=1)=>`${e.toFixed(a)}%`;function g({bars:e}){let i=Math.max(...e.map(e=>e.value)),t=78*e.length+26+10;return(0,a.jsxs)("svg",{viewBox:`0 0 ${t} 204`,className:"fcx-bar-svg",role:"img","aria-label":`Bar chart: ${e.map(e=>`${e.label} gives ${e.note}`).join("; ")}`,children:[(0,a.jsxs)("defs",{children:[(0,a.jsxs)("linearGradient",{id:"fcx-bar-grad",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,a.jsx)("stop",{offset:"0%",stopColor:"#3fb0a0"}),(0,a.jsx)("stop",{offset:"100%",stopColor:"#256b62"})]}),(0,a.jsxs)("linearGradient",{id:"fcx-bar-side",x1:"0",y1:"0",x2:"1",y2:"0",children:[(0,a.jsx)("stop",{offset:"0%",stopColor:"#256b62"}),(0,a.jsx)("stop",{offset:"100%",stopColor:"#163f3a"})]})]}),e.map((e,t)=>{let s=e.value/i*150,r=26+78*t,n=160-s;return(0,a.jsxs)("g",{children:[(0,a.jsx)("rect",{x:r,y:n,width:52,height:s,fill:"url(#fcx-bar-grad)",rx:"2"}),(0,a.jsx)("polygon",{points:`${r},${n} ${r+52},${n} ${r+52+10},${n-10} ${r+10},${n-10}`,fill:"color-mix(in srgb, #3fb0a0 82%, white)"}),(0,a.jsx)("polygon",{points:`${r+52},${n} ${r+52+10},${n-10} ${r+52+10},${n+s-10} ${r+52},${n+s}`,fill:"url(#fcx-bar-side)"}),(0,a.jsx)("text",{x:r+26,y:n-10-6,textAnchor:"middle",fontSize:"13",fontWeight:"700",fill:"#cfe0ff",children:e.note}),(0,a.jsx)("text",{x:r+26,y:182,textAnchor:"middle",fontSize:"12",fill:"#8b93a7",children:e.label})]},e.label)})]})}let v=[{slug:"/articles",label:"Articles"},{slug:"/research",label:"Research"},{slug:"/tools",label:"Tools"},{slug:"/strategy",label:"Strategy"},{slug:"/insights",label:"Insights"},{slug:"/philosophy",label:"Philosophy"},{slug:"/methodology",label:"Methodology"}];function u(e,a){let i="/"===e?"":e.replace(/\/$/,"");return"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}function b({siteBasePath:e,currentSlug:t}){let{open:r,toggle:n}=(0,s.useMobileMenu)();return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("nav",{className:"fcx-nav","aria-label":"Primary",children:[(0,a.jsxs)("div",{className:"fcx-nav-inner",children:[(0,a.jsxs)(i.default,{href:u(e,"/"),className:"fcx-nav-brand",children:[(0,a.jsxs)("svg",{width:"22",height:"18",viewBox:"0 0 22 18",fill:"none","aria-hidden":!0,children:[(0,a.jsx)("rect",{x:"1",y:"10",width:"3.5",height:"7",fill:"currentColor",opacity:"0.5"}),(0,a.jsx)("rect",{x:"6.5",y:"6",width:"3.5",height:"11",fill:"currentColor",opacity:"0.7"}),(0,a.jsx)("rect",{x:"12",y:"8",width:"3.5",height:"9",fill:"currentColor",opacity:"0.5"}),(0,a.jsx)("rect",{x:"17.5",y:"1",width:"3.5",height:"16",fill:"currentColor"})]}),(0,a.jsx)("span",{children:"Fenul Capital Investment"})]}),(0,a.jsx)("div",{className:"fcx-nav-links",children:v.map(s=>(0,a.jsx)(i.default,{href:u(e,s.slug),className:"fcx-nav-link","aria-current":t===s.slug?"page":void 0,children:s.label},s.slug))}),(0,a.jsxs)("button",{type:"button",className:"fcx-menu-btn","aria-expanded":r,"aria-controls":"fcx-mobile-menu",onClick:n,children:[(0,a.jsx)("span",{className:"fcx-menu-bars","aria-hidden":!0}),(0,a.jsx)("span",{children:r?"Close":"Menu"})]}),(0,a.jsx)(i.default,{href:u(e,"/consultation"),className:"fcx-nav-cta",children:"Find an advisor"})]}),r?(0,a.jsx)("div",{id:"fcx-mobile-menu",className:"fcx-mobile",children:v.map(s=>(0,a.jsx)(i.default,{href:u(e,s.slug),className:"fcx-mobile-link","aria-current":t===s.slug?"page":void 0,children:s.label},s.slug))}):null]}),(0,a.jsx)("div",{className:"fcx-sticky",children:(0,a.jsx)(i.default,{href:u(e,"/consultation"),className:"fcx-btn-primary",children:"Find an advisor"})}),(0,a.jsx)("div",{id:"main-content",tabIndex:-1})]})}function f({siteBasePath:e}){return(0,a.jsx)("footer",{className:"fcx-footer",role:"contentinfo",children:(0,a.jsxs)("div",{className:"fcx-footer-inner",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"fcx-footer-brand",children:"Fenul Capital Investment"}),(0,a.jsx)("p",{className:"fcx-footer-tagline",children:"Research, tools, and market intelligence for investors who think in decades, not headlines."})]}),(0,a.jsxs)("nav",{className:"fcx-footer-links","aria-label":"Footer navigation",children:[(0,a.jsx)(i.default,{href:u(e,"/articles"),children:"Articles"}),(0,a.jsx)(i.default,{href:u(e,"/research"),children:"Research"}),(0,a.jsx)(i.default,{href:u(e,"/tools"),children:"Tools"}),(0,a.jsx)(i.default,{href:u(e,"/strategy"),children:"Strategy"}),(0,a.jsx)(i.default,{href:u(e,"/insights"),children:"Insights"}),(0,a.jsx)(i.default,{href:u(e,"/who/high-net-worth-individuals"),children:"Audiences"}),(0,a.jsx)(i.default,{href:u(e,"/philosophy"),children:"Philosophy"}),(0,a.jsx)(i.default,{href:u(e,"/methodology"),children:"Methodology"}),(0,a.jsx)(i.default,{href:u(e,"/consultation"),children:"Contact"}),(0,a.jsx)(i.default,{href:u(e,"/legal"),children:"Legal"})]}),(0,a.jsx)("p",{className:"fcx-footer-disclaimer",children:"Fenul Capital Investment publishes educational research, articles, and calculators. Nothing on this site is personalized investment advice, and n
21370o client or advisory relationship is formed by using it. All charts, heatmaps, and calculator outputs are illustrative and hypothetical, not a projection of future results."})]})})}let x=[{rate:.04,cls:"fcx-cmp-a"},{rate:.06,cls:"fcx-cmp-b"},{rate:.08,cls:"fcx-cmp-c"}];function y(){let e=e=>52+384*e/30,i=e=>20+276*(1-Math.min(e,1e5)/1e5),t=e=>`$${Math.round(e).toLocaleString("en-US")}`,s=x.map(a=>{let t=Array.from({length:31},(t,s)=>`${e(s).toFixed(1)},${i(1e4*(1+a.rate)**s).toFixed(1)}`);return{...a,pts:t.join(" "),end:1e4*(1+a.rate)**30}});return(0,a.jsxs)("figure",{className:"fcx-cmp","aria-labelledby":"fcx-cmp-cap",children:[(0,a.jsx)("p",{className:"fcx-cmp-title",children:"The same $10,000 at three assumed returns"}),(0,a.jsxs)("svg",{viewBox:"0 0 520 340",role:"img","aria-labelledby":"fcx-cmp-t fcx-cmp-d",children:[(0,a.jsx)("title",{id:"fcx-cmp-t",children:"Growth of $10,000 over 30 years at 4, 6 and 8 percent a year"}),(0,a.jsxs)("desc",{id:"fcx-cmp-d",children:["After 30 years with no additions: ",s.map(e=>`${Math.round(100*e.rate)} percent gives ${t(e.end)}`).join("; "),"."]}),[0,25e3,5e4,75e3,1e5].map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:52,x2:436,y1:i(e),y2:i(e),className:"fcx-cmp-grid"}),(0,a.jsx)("text",{x:44,y:i(e)+4,textAnchor:"end",className:"fcx-cmp-axis",children:0===e?"$0":`$${e/1e3}k`})]},e)),[0,10,20,30].map(i=>(0,a.jsx)("text",{x:e(i),y:322,textAnchor:"middle",className:"fcx-cmp-axis",children:0===i?"Start":`Year ${i}`},i)),s.map(t=>(0,a.jsxs)("g",{className:t.cls,children:[(0,a.jsx)("polyline",{points:t.pts,className:"fcx-cmp-line"}),(0,a.jsx)("circle",{cx:e(30),cy:i(t.end),r:4.5,className:"fcx-cmp-dot"}),(0,a.jsxs)("text",{x:e(30)+10,y:i(t.end)+4,className:"fcx-cmp-end",children:[Math.round(100*t.rate),"%"]})]},t.rate))]}),(0,a.jsx)("ul",{className:"fcx-cmp-legend",children:s.map(e=>(0,a.jsxs)("li",{className:e.cls,children:[(0,a.jsx)("span",{className:"fcx-cmp-swatch","aria-hidden":!0}),(0,a.jsxs)("span",{children:[Math.round(100*e.rate),"% a year"]}),(0,a.jsx)("strong",{children:t(e.end)})]},e.rate))}),(0,a.jsx)("figcaption",{id:"fcx-cmp-cap",className:"fcx-cmp-cap",children:"Arithmetic only: $10,000 with no additions, before fees, taxes and inflation, after 30 years. The returns are assumptions, not predictions."})]})}e.s(["FenulCapitalInvestmentContentPage",0,function({page:e,siteBasePath:i="",siteKey:s,siteName:r}){let n="/"===i?void 0:i;return(0,a.jsxs)("div",{className:"fcx-shell shell-fcx fcx-content-shell",children:[(0,a.jsx)(t.SkipToContent,{}),(0,a.jsx)(b,{siteBasePath:i,currentSlug:e.slug}),(0,a.jsx)("div",{className:"fcx-ambient-layer","aria-hidden":!0,children:(0,a.jsx)(d,{})}),(0,a.jsx)("div",{className:"fcx-ambient-gradient","aria-hidden":!0}),(0,a.jsx)("main",{className:"fcx-content-main",children:(0,a.jsx)(l.BlockRenderer,{blocks:e.blocks.map(e=>"contrast"===e.surface?{...e,surface:"muted"}:e),pageSlug:e.slug,pageTitle:e.title,pathPrefix:n,siteKey:s,siteName:r,visualVariant:"fenul-capital-investment"})}),(0,a.jsx)(f,{siteBasePath:i})]})},"FenulCapitalInvestmentPage",0,function({siteBasePath:e=""}){(0,o.useReducedMotion)();let s=[.16,1,.3,1],r=[{label:"Rule of 72",value:"12 years",note:"to double money at 6% a year (72 ÷ 6)"},{label:"Getting back to even",value:"+100%",note:"gain needed after a 50% loss"},{label:"Fee drag",value:p((h(.06,30)-h(.05,30))/h(.06,30)*100),note:"of a 30-year balance lost to a 1% yearly fee, at 6% before fees"},{label:"Inflation",value:`${Math.round(Math.log(2)/Math.log(1.03))} years`,note:"for 3% inflation to halve what money buys"},{label:"Compounding",value:m(h(.07,30)),note:"from $10,000 at 7% a year for 30 years"}],l=[.03,.05,.07,.09].map(e=>({label:`${Math.round(100*e)}% a year`,value:h(e,10),note:m(h(e,10))})),v=[10,25,50,75].map(e=>({loss:`-${e}%`,gain:`+${p(e/(100-e)*100,+(50!==e&&75!==e))}`}));return(0,a.jsxs)("div",{className:"fcx-shell shell-fcx",children:[(0,a.jsx)(t.SkipToContent,{}),(0,a.jsx)(b,{siteBasePath:e,currentSlug:"/"}),(0,a.jsxs)("section",{className:"fcx-hero","aria-label":"Hero",children:[(0,a.jsxs)("div",{className:"fcx-hero-canvas-wrap",children:[(0,a.jsx)(d,{}),(0,a.jsx)("div",{className:"fcx-ambient-gradient","aria-hidden":!0})]}),(0,a.jsx)("div",{className:"fcx-hero-content",children:(0,a.jsxs)("div",{className:"fcx-hero-grid",children:[(0,a.jsxs)("div",{className:"fcx-hero-inner fcx-rise",children:[(0,a.jsxs)("h1",{className:"fcx-hero-title",children:["Advanced investment intelligence for ",(0,a.jsx)("em",{children:"serious capital."})]}),(0,a.jsx)("p",{className:"fcx-hero-body",children:"AI-assisted research, quantitative strategy, and risk-aware portfolio thinking — plus the tools to test the numbers yourself. Built for investors who want more than generic advice."}),(0,a.jsxs)("div",{className:"fcx-hero-ctas",children:[(0,a.jsx)(i.default,{href:u(e,"/consultation"),className:"fcx-btn-primary",children:"Get matched with an advisor"}),(0,a.jsx)(i.default,{href:u(e,"/research"),className:"fcx-btn-ghost",children:"Explore research"})]}),(0,a.jsx)("p",{className:"fcx-hero-note",children:"Education and tools only. Nothing here is personalized advice or a recommendation."})]}),(0,a.jsx)(y,{})]})})]}),(0,a.jsx)("section",{className:"fcx-section","aria-label":"The arithmetic behind the tools",children:(0,a.jsxs)("div",{className:"fcx-container",children:[(0,a.jsx)("p",{className:"fcx-eyebrow",children:"Worked arithmetic, not market data"}),(0,a.jsx)("h2",{className:"fcx-section-title",children:"Five numbers every investor should have worked out once"}),(0,a.jsx)("p",{className:"fcx-body-text",children:"Each figure is calculated from the assumption beside it, and each has a calculator behind it so you can change the assumption. This site shows no live prices and makes no forecasts."}),(0,a.jsx)(n.motion.div,{className:"fcx-ticker-strip",initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-60px"},transition:{duration:.5,ease:s},children:r.map(e=>(0,a.jsxs)("div",{className:"fcx-ticker-cell",children:[(0,a.jsx)("p",{className:"fcx-ticker-label",children:e.label}),(0,a.jsx)("p",{className:"fcx-ticker-value",children:e.value}),(0,a.jsx)("p",{className:"fcx-ticker-note",children:e.note})]},e.label))})]})}),(0,a.jsx)("section",{className:"fcx-section fcx-section--raised","aria-label":"Featured tools",children:(0,a.jsxs)("div",{className:"fcx-container",children:[(0,a.jsx)("p",{className:"fcx-eyebrow",children:"Try the numbers yourself"}),(0,a.jsx)("h2",{className:"fcx-section-title",children:"Calculators built for real decisions"}
21370),(0,a.jsx)("div",{className:"fcx-grid-4",children:[{slug:"compound-growth-calculator",title:"Compound growth calculator",blurb:"See how balance grows from a starting amount, a monthly addition, and a rate you choose."},{slug:"portfolio-allocation-analyzer",title:"Portfolio allocation analyzer",blurb:"Set weights across asset buckets and see concentration or drift."},{slug:"options-profit-loss-calculator",title:"Options profit / loss calculator",blurb:"Sketch an option position and see where you gain, lose, and break even."},{slug:"drawdown-recovery-calculator",title:"Drawdown recovery calculator",blurb:"Turn a percent loss into the gain needed to get back to even."}].map((t,r)=>(0,a.jsx)(n.motion.div,{initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-40px"},transition:{duration:.4,delay:.06*r,ease:s},children:(0,a.jsxs)(i.default,{href:u(e,`/tools/${t.slug}`),className:"fcx-panel",style:{display:"block",textDecoration:"none"},children:[(0,a.jsx)("p",{className:"fcx-panel-title",children:t.title}),(0,a.jsx)("p",{className:"fcx-panel-body",children:t.blurb})]})},t.slug))})]})}),(0,a.jsx)("section",{className:"fcx-section","aria-label":"Worked comparison",children:(0,a.jsxs)("div",{className:"fcx-container",children:[(0,a.jsx)("p",{className:"fcx-eyebrow",children:"Portfolio construction"}),(0,a.jsx)("h2",{className:"fcx-section-title",children:"How rate and loss change the outcome"}),(0,a.jsxs)("div",{className:"fcx-grid-2",children:[(0,a.jsxs)(n.motion.div,{className:"fcx-panel",initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-60px"},transition:{duration:.5,ease:s},children:[(0,a.jsx)("p",{className:"fcx-panel-title",children:"What $10,000 becomes in 10 years"}),(0,a.jsx)(g,{bars:l}),(0,a.jsx)("p",{className:"fcx-chart-caption",children:"Arithmetic, not a forecast. Each bar assumes the same return every year, reinvested, with no fees, tax or withdrawals. Real returns vary from year to year."})]}),(0,a.jsxs)(n.motion.div,{className:"fcx-panel",initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-60px"},transition:{duration:.5,delay:.08,ease:s},children:[(0,a.jsx)("p",{className:"fcx-panel-title",children:"What it takes to recover a loss"}),(0,a.jsxs)("table",{className:"fcx-recovery",children:[(0,a.jsx)("caption",{className:"fcx-sr",children:"Gain needed to get back to even after a loss"}),(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"col",children:"If you lose"}),(0,a.jsx)("th",{scope:"col",children:"You need to gain"})]})}),(0,a.jsx)("tbody",{children:v.map(e=>(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"row",children:e.loss}),(0,a.jsx)("td",{children:e.gain})]},e.loss))})]}),(0,a.jsx)("p",{className:"fcx-chart-caption",children:"A gain of loss ÷ (100 − loss). It is why limiting large drawdowns matters more than it first looks. The drawdown calculator lets you test your own numbers."})]})]})]})}),(0,a.jsx)("section",{className:"fcx-section fcx-section--raised","aria-label":"Featured research",children:(0,a.jsxs)("div",{className:"fcx-container",children:[(0,a.jsx)("p",{className:"fcx-eyebrow",children:"From the research library"}),(0,a.jsx)("h2",{className:"fcx-section-title",children:"Analytical, not fluffy"}),(0,a.jsx)("p",{className:"fcx-body-text",children:"Charts, examples, and scenarios — articles that solve real investor questions and lead to a tool."}),(0,a.jsx)("div",{className:"fcx-grid-4",children:[{slug:"quantitative-investing",title:"Quantitative investing",blurb:"How rules-based approaches differ from story-driven trading."},{slug:"risk-management",title:"Risk management",blurb:"Drawdowns, concentration, liquidity, and sequence risk in plain terms."},{slug:"options-derivatives",title:"Options and derivatives",blurb:"Payoffs, limits, and vocabulary explained before any strategy talk."},{slug:"macroeconomic-analysis",title:"Macroeconomic context",blurb:"Rates, inflation, and credit conditions as background, not headlines."}].map((t,r)=>(0,a.jsx)(n.motion.div,{initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-40px"},transition:{duration:.4,delay:.06*r,ease:s},children:(0,a.jsxs)(i.default,{href:u(e,`/research/${t.slug}`),className:"fcx-panel",style:{display:"block",textDecoration:"none"},children:[(0,a.jsx)("p",{className:"fcx-panel-title",children:t.title}),(0,a.jsx)("p",{className:"fcx-panel-body",children:t.blurb})]})},t.slug))})]})}),(0,a.jsx)("section",{className:"fcx-section","aria-label":"Strategy library",children:(0,a.jsxs)("div",{className:"fcx-container",children:[(0,a.jsx)("p",{className:"fcx-eyebrow",children:"Strategy library"}),(0,a.jsx)("h2",{className:"fcx-section-title",children:"Longer-form strategy, b
21370y situation"}),(0,a.jsx)("div",{className:"fcx-grid-4",children:[{slug:"quantitative-strategy",title:"Quantitative strategy",audience:"Readers who like rules and data more than headlines"},{slug:"tactical-asset-allocation",title:"Tactical asset allocation",audience:"Readers adjusting risk as conditions change"},{slug:"high-net-worth-portfolio-structuring",title:"High-net-worth portfolio structuring",audience:"Households with several accounts or concentrated positions"},{slug:"risk-managed-investing",title:"Risk-managed investing",audience:"People who want returns but worry about large losses"}].map((t,r)=>(0,a.jsx)(n.motion.div,{initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-40px"},transition:{duration:.4,delay:.06*r,ease:s},children:(0,a.jsxs)(i.default,{href:u(e,`/strategy/${t.slug}`),className:"fcx-panel",style:{display:"block",textDecoration:"none"},children:[(0,a.jsx)("p",{className:"fcx-panel-title",children:t.title}),(0,a.jsx)("p",{className:"fcx-panel-body",children:t.audience})]})},t.slug))})]})}),(0,a.jsx)("section",{className:"fcx-section","aria-label":"Find an advisor",children:(0,a.jsx)("div",{className:"fcx-container",children:(0,a.jsxs)(n.motion.div,{className:"fcx-match",initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,ease:s},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"fcx-eyebrow",children:"Find an advisor"}),(0,a.jsx)("h2",{className:"fcx-section-title",children:"Research it here. Then talk to someone who does this for a living."}),(0,a.jsxs)("ol",{className:"fcx-match-steps",children:[(0,a.jsx)("li",{children:"Read the research or run a tool to frame your question."}),(0,a.jsx)("li",{children:"Answer a few short questions. Ranges are fine for money."}),(0,a.jsxs)("li",{children:["We review your answers, contact you to confirm what you need, and match you with a licensed financial advisor who specializes in ",c,"."]})]})]}),(0,a.jsxs)("div",{className:"fcx-match-side",children:[(0,a.jsx)(i.default,{href:u(e,"/consultation"),className:"fcx-btn-primary",style:{justifyContent:"center"},children:"Get matched with an advisor"}),(0,a.jsx)("p",{className:"fcx-match-note",children:"General education only. Asking to be matched creates no advisory relationship; the advisor gives you their own disclosures."})]})]})})}),(0,a.jsx)(f,{siteBasePath:e})]})}])},144119,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(468158),s=e.i(600951),r=e.i(271645),n=e.i(846932),o=e.i(772328);e.i(116233);var l=e.i(365587);let c=(0,e.i(525320).advisorNiche)("cafinancialadvisor.com").specialty;function d(){let e=(0,r.useRef)(null),i=(0,r.useRef)(0),t=(0,o.useReducedMotion)(),s=(0,r.useRef)(t);return(0,r.useEffect)(()=>{s.current=t},[t]),(0,r.useEffect)(()=>{let a=e.current;if(!a)return;let t=a.getContext("2d");if(!t)return;let r=0,n=0,o=[{y0:.62,amp:.05,speed:.006,wavelength:1.4,color:"30,111,200",alpha:.1},{y0:.72,amp:.07,speed:.0045,wavelength:1,color:"20,80,150",alpha:.14},{y0:.84,amp:.09,speed:.003,wavelength:.7,color:"6,32,64",alpha:.1}];function l(){r=a.offsetWidth,n=a.offsetHeight,a.width=r*devicePixelRatio,a.height=n*devicePixelRatio,t.setTransform(devicePixelRatio,0,0,devicePixelRatio,0,0)}let c=0;function d(){t.clearRect(0,0,r,n);let e=t.createRadialGradient(.86*r,.16*n,0,.86*r,.16*n,.32*r);e.addColorStop(0,"rgba(249,115,22,0.16)"),e.addColorStop(1,"rgba(249,115,22,0)"),t.fillStyle=e,t.fillRect(0,0,r,n),o.forEach(e=>{t.beginPath(),t.moveTo(0,n);for(let a=0;a<=r;a+=6){let i=n*e.y0+Math.sin(a/(r*e.wavelength)*Math.PI*2+c*e.speed)*n*e.amp+Math.sin(a/(r*e.wavelength*.4)+c*e.speed*1.7)*n*e.amp*.25;t.lineTo(a,i)}t.lineTo(r,n),t.closePath(),t.fillStyle=`rgba(${e.color},${e.alpha})`,t.fill()}),c+=1,s.current||(i.current=requestAnimationFrame(d))}let h=new ResizeObserver(()=>{(a.offsetWidth!==r||a.offsetHeight!==n)&&(l(),s.current&&d())});return h.observe(a),l(),d(),()=>{h.disconnect(),cancelAnimationFrame(i.current)}},[]),(0,a.jsx)("canvas",{ref:e,className:"pcw-tide-canvas","aria-hidden":!0})}let h=Math.round(7.000000000000001),m=[0,10,20,30,40].map(e=>{let a;return{years:e,value:(a=.07/12,0===e?0:500*((1+a)**(12*e)-1)/a)}}),p=e=>e>=1e6?`$${(e/1e6).toFixed(1)}M`:e>0?`$${Math.round(e/1e3)}k`:"$0";function g(){let e=Math.max(...m.map(e=>e.value)),i=572/(m.length-1),t=m.map((a,t)=>({x:34+t*i,y:220-a.value/e*186,...a})),s=t.map((e,a)=>`${0===a?"M":"L"}${e.x.toFixed(1)},${e.y.toFixed(1)}`).join(" "),r=`${s} L${t[t.length-1].x.toFixed(1)},220 L${t[0].x.toFixed(1)},220 Z`;return(0,a.jsxs)("svg",{viewBox:"0 0 640 250",className:"pcw-arc-svg",role:"img","aria-label":`$500 saved every month at ${h} percent a year grows to ${m.map(e=>`${p(e.value)} after ${e.years} years`).slice(1).join(", ")}`,children:[(0,a.jsx)("defs",{children:(0,a.jsxs)("linearGradient",{id:"pcw-arc-fill",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,a.jsx)("stop",{offset:"0%",stopColor:"#1e6fc8",stopOpacity:"0.28"}),(0,a.jsx)("stop",{offset:"100%",stopColor:"#1e6fc8",stopOpacity:"0"})]})}),(0,a.jsx)("path",{d:r,fill:"url(#pcw-arc-fill)",className:"pcw-arc-area"}),(0,a.jsx)("path",{d:s,fill:"none",stroke:"#1e6fc8",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",pathLength:1,className:"pcw-arc-line"}),t.map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("circle",{cx:e.x,cy:e.y,r:"4.5",fill:"#f97316",stroke:"#f4fbff",strokeWidth:"2"}),(0,a.jsx)("text",{x:e.x,y:e.y-12,textAnchor:"middle",fontSize:"12",fontWeight:"700",fill:"#062040",children:p(e.value)}),(0,a.jsx)("text",{x:e.x,y:242,textAnchor:"middle",fontSize:"12",fontWeight:"600",fill:"#4a6178",children:0===e.years?"Start":`Year ${e.years}`})]},e.years))]})}let v=[{label:"Foundations",blurb:"Cash flow, an emergency fund sized for California costs, and your first investing decisions.",posts:[{title:"Emergency Fund Sizing for California's Cost of Living",slug:"emergency-fund-sizing-california"},{title:"First-Time Investor Basics for California Savers",slug:"first-time-investor-basics"}]},{label:"Growing Household",blurb:"Coordinating two incomes, paying down debt with a plan, and starting education savings.",posts:[{title:"ScholarShare 529: California's College Savings Plan",slug:"california-529-scholarshare-plan"},{title:"Debt Payoff Strategies: Avalanche vs Snowball",slug:"debt-payoff-strategies-avalanche-snowball"}]},{label:"Peak Earning",blurb:"Housing decisions at the top of the market, plus getting more from HSA and FSA accounts.",posts:[{title:"What 'Affordable' Really Means in California Housing Markets",slug:"home-affordability-california-markets"},{title:"HSA and FSA Optimization for California Employees",slug:"hsa-fsa-optimization-california"}]},{label:"Pre-Retirement",blurb:"Property tax rules that matter for CA homeowners, and what the state taxes in retirement.",posts:[{title:"Prop 19 and Property Tax on Inherited California Homes",slug:"prop-19-inherited-property-tax"},{title:"How California Taxes Your Retirement Income",slug:"california-state-tax-retirement-income"}]},{label:"Retirement-Ready",blurb:"Claiming Social Security on your terms, and the estate-planning basics every household needs.",posts:[{title:"Social Security Claiming Strategy for California Retirees",slug:"social-security-claiming-strategy-california"},{title:"Estate Planning Basics for California Residents",slug:"estate-planning-basics-california"}]}];function u({siteBasePath:e}){return(0,a.jsx)("div",{className:"pcw-timeline",children:v.map((t,s)=>(0,a.jsxs)(n.motion.div,{className:"pcw-timeline-stage",initial:{opacity:0,y:18},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-40px"},transition:{duration:.45,delay:.08*s,ease:[.16,1,.3,1]},children:[(0,a.jsx)("div",{className:"pcw-timeline-marker","aria-hidden":!0,
21370children:s+1}),(0,a.jsx)("p",{className:"pcw-timeline-label",children:t.label}),(0,a.jsx)("p",{className:"pcw-timeline-blurb",children:t.blurb}),(0,a.jsx)("div",{className:"pcw-timeline-links",children:t.posts.map(t=>(0,a.jsx)(i.default,{href:f(e,`/blog/${t.slug}`),className:"pcw-timeline-link",children:t.title},t.slug))})]},t.label))})}let b=[{slug:"/blog",label:"Guides"},{slug:"/tools",label:"Tools"},{slug:"/services",label:"Coverage"},{slug:"/about",label:"About"}];function f(e,a){let i="/"===e?"":e.replace(/\/$/,"");return"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}function x({siteBasePath:e,currentSlug:t}){let{open:r,toggle:n}=(0,s.useMobileMenu)();return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("nav",{className:"pcw-nav","aria-label":"Primary",children:[(0,a.jsxs)("div",{className:"pcw-nav-inner",children:[(0,a.jsxs)(i.default,{href:f(e,"/"),className:"pcw-nav-brand",children:[(0,a.jsxs)("svg",{width:"24",height:"20",viewBox:"0 0 24 20",fill:"none","aria-hidden":!0,children:[(0,a.jsx)("path",{d:"M1 14c2-3 4-3 6 0s4 3 6 0 4-3 6 0 4 3 6 0",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",opacity:"0.55"}),(0,a.jsx)("path",{d:"M1 19c2-3 4-3 6 0s4 3 6 0 4-3 6 0 4 3 6 0",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]}),(0,a.jsx)("span",{children:"Pacific Wealth Desk"})]}),(0,a.jsx)("div",{className:"pcw-nav-links",children:b.map(s=>(0,a.jsx)(i.default,{href:f(e,s.slug),className:"pcw-nav-link","aria-current":t===s.slug?"page":void 0,children:s.label},s.slug))}),(0,a.jsxs)("button",{type:"button",className:"pcw-menu-btn","aria-expanded":r,"aria-controls":"pcw-mobile-menu",onClick:n,children:[(0,a.jsx)("span",{className:"pcw-menu-bars","aria-hidden":!0}),(0,a.jsx)("span",{children:r?"Close":"Menu"})]}),(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"pcw-nav-cta",children:"Find an advisor"})]}),r?(0,a.jsxs)("div",{id:"pcw-mobile-menu",className:"pcw-mobile",children:[b.map(s=>(0,a.jsx)(i.default,{href:f(e,s.slug),className:"pcw-mobile-link","aria-current":t===s.slug?"page":void 0,children:s.label},s.slug)),(0,a.jsx)(i.default,{href:f(e,"/advisors"),className:"pcw-mobile-link",children:"For advisors"})]}):null]}),(0,a.jsx)("div",{className:"pcw-sticky",children:(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"pcw-btn-primary",children:"Find an advisor"})}),(0,a.jsx)("div",{id:"main-content",tabIndex:-1})]})}function y({siteBasePath:e}){return(0,a.jsx)("footer",{className:"pcw-footer",role:"contentinfo",children:(0,a.jsxs)("div",{className:"pcw-footer-inner",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"pcw-footer-brand",children:"Pacific Wealth Desk"}),(0,a.jsx)("p",{className:"pcw-footer-tagline",children:"California-first planning, investing, and benefits guides — with calculators built for real West Coast paychecks and housing costs."})]}),(0,a.jsxs)("nav",{className:"pcw-footer-links","aria-label":"Footer navigation",children:[(0,a.jsx)(i.default,{href:f(e,"/blog"),children:"Guides"}),(0,a.jsx)(i.default,{href:f(e,"/tools"),children:"Tools"}),(0,a.jsx)(i.default,{href:f(e,"/services"),children:"Coverage"}),(0,a.jsx)(i.default,{href:f(e,"/about"),children:"About"}),(0,a.jsx)(i.default,{href:f(e,"/contact"),children:"Contact"}),(0,a.jsx)(i.default,{href:f(e,"/advisors"),children:"For advisors"}),(0,a.jsx)(i.default,{href:f(e,"/privacy"),children:"Privacy"}),(0,a.jsx)(i.default,{href:f(e,"/terms"),children:"Terms"}),(0,a.jsx)(i.default,{href:f(e,"/disclaimer"),children:"Disclaimer"}),(0,a.jsx)(i.default,{href:f(e,"/editorial-policy"),children:"Editorial policy"}),(0,a.jsx)(i.default,{href:f(e,"/editorial-team"),children:"Editorial team"}),(0,a.jsx)(i.default,{href:f(e,"/do-not-sell"),children:"Do not sell"})]}),(0,a.jsx)("p",{className:"pcw-footer-disclaimer",children:"Pacific Wealth Desk publishes educational guides and calculators for California households. Nothing on this site is personalized investment, tax, or legal advice, and no advisory relationship is formed by using it. The growth chart above is a hypothetical illustration, not a projection or promise of future results."})]})})}e.s(["CaFinancialAdvisorContentPage",0,function({page:e,siteBasePath:i="",siteKey:s,siteName:r,after:n}){let o="/"===i?void 0:i;return(0,a.jsxs)("div",{className:"pcw-shell shell-pcw pcw-content-shell domain-finance-ca-com",children:[(0,a.jsx)(t.SkipToContent,{}),(0,a.jsx)(x,{siteBasePath:i,currentSlug:e.slug}),(0,a.jsxs)("main",{className:"pcw-content-main",children:[(0,a.jsx)(l.BlockRenderer,{blocks:e.blocks.map(e=>"contrast"===e.surface?{...e,surface:"muted"}:e),pageSlug:e.slug,pageTitle:e.title,pathPrefix:o,siteKey:s,siteName:r,visualVariant:"finance"}),n]}),(0,a.jsx)(y,{siteBasePath:i})]})},"CaFinancialAdvisorPage",0,function({siteBasePath:e=""}){let s=[.16,1,.3,1];return(0,a.jsxs)("div",{className:"pcw-shell shell-pcw",children:[(0,a.jsx)(t.SkipToContent,{}),(0,a.jsx)(x,{siteBasePath:e,currentSlug:"/"}),(0,a.jsxs)("section",{className:"pcw-hero","aria-label":"Hero",children:[(0,a.jsx)("div",{className:"pcw-hero-canvas-wrap",children:(0,a.jsx)(d,{})}),(0,a.jsx)("div",{className:"pcw-hero-content",children:(0,a.jsxs)("div",{className:"pcw-hero-grid",children:[(0,a.jsxs)("div",{className:"pcw-hero-inner pcw-rise",children:[(0,a.jsxs)("h1",{className:"pcw-hero-title",children:["California-smart money moves",(0,a.jsx)("br",{}),(0,a.jsx)("em",{children:"without the noise."})]}),(0,a.jsx)("p",{className:"pcw-hero-body",children:"Planning, investing, and benefits guides tuned for real West Coast paychecks and housing costs — plus free calculators to run the numbers before you decide."}),(0,a.jsxs)("div",{className:"pcw-hero-ctas",children:[(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"pcw-btn-primary",children:"Get matched with an advisor"}),(0,a.jsx)(i.default,{href:f(e,"/blog"),className:"pcw-btn-ghost",children:"Browse all guides"})]}),(0,a.jsxs)("div",{className:"pcw-hero-start",children:[(0,a.jsx)("p",{className:"pcw-hero-start-h",children:"Start where you are"}),(0,a.jsx)("ul",{className:"pcw-hero-start-list",children:v.map(t=>(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,`/blog/${t.posts[0].slug}`),className:"pcw-hero-start-chip",children:t.label})},t.label))})]})]}),(0,a.jsxs)("figure",{className:"pcw-hero-figure pcw-rise",children:[(0,a.jsx)("p",{className:"pcw-hero-figure-t",children:"What steady saving does"}),(0,a.jsx)(g,{}),(0,a.jsxs)("figcaption",{className:"pcw-chart-caption",children:["Arithmetic only: $",500," a month at ",h,"% a year, compounded monthly, before fees and taxes. Not a forecast or a promise."]})]})]})})]}),(0,a.jsx)("section",{className:"pcw-section","aria-label":"California planning spotlight",children:(0,a.jsxs)("div",{className:"pcw-container",children:[(0,a.jsx)("p",{className:"pcw-eyebrow",children:"CA planning spotlight"}),(0,a.jsx)("h2",{className:"pcw-section-title",children:"Questions Californians actually ask"}),(0,a.jsx)("p",{className:"pcw-body-text",children:"Guides written for California rules and California costs — not generic national advice with a state badge on it."}),(0,a.jsx)("div",{className:"pcw-grid-4",children:[{slug:"home-affordability-california-markets",title:"What 'Affordable' Really Means in California Housing Markets",blurb
21370:"Standard affordability guidelines were not built for California's price extremes — or for its moderate property tax structure."},{slug:"california-state-tax-retirement-income",title:"How California Taxes Your Retirement Income",blurb:"401(k) and IRA withdrawals are taxed as ordinary income, but Social Security never is — which changes how to sequence withdrawals."},{slug:"prop-19-inherited-property-tax",title:"Prop 19 and Property Tax on Inherited California Homes",blurb:"Whether an heir moves in within a year can now decide a potentially enormous property tax difference."},{slug:"social-security-claiming-strategy-california",title:"Social Security Claiming Strategy for California Retirees",blurb:"Claiming at the wrong age can cost tens of thousands of dollars over a retirement."}].map((t,r)=>(0,a.jsx)(n.motion.div,{initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-40px"},transition:{duration:.4,delay:.06*r,ease:s},children:(0,a.jsxs)(i.default,{href:f(e,`/blog/${t.slug}`),className:"pcw-panel",style:{display:"block",textDecoration:"none"},children:[(0,a.jsx)("p",{className:"pcw-panel-title",children:t.title}),(0,a.jsx)("p",{className:"pcw-panel-body",children:t.blurb})]})},t.slug))})]})}),(0,a.jsx)("section",{className:"pcw-section","aria-label":"Guides by life stage",children:(0,a.jsxs)("div",{className:"pcw-container",children:[(0,a.jsx)("p",{className:"pcw-eyebrow",children:"By life stage"}),(0,a.jsx)("h2",{className:"pcw-section-title",children:"Find your stage, then your guide"}),(0,a.jsx)("p",{className:"pcw-body-text",children:"Every published guide sorted into the stage it actually helps with — read the two that match where you are right now."}),(0,a.jsx)(u,{siteBasePath:e})]})}),(0,a.jsx)("section",{className:"pcw-section pcw-section--raised","aria-label":"Featured tools",children:(0,a.jsxs)("div",{className:"pcw-container",children:[(0,a.jsx)("p",{className:"pcw-eyebrow",children:"Try the numbers yourself"}),(0,a.jsx)("h2",{className:"pcw-section-title",children:"Calculators built for real decisions"}),(0,a.jsx)("div",{className:"pcw-grid-3",children:[{title:"Compound trajectory lab",blurb:"Project how regular contributions grow over time under different return, fee, and timeline assumptions."},{title:"Retirement runway model",blurb:"Model your retirement runway from savings rate, timeline, and expected returns — then stress-test it."},{title:"Purchasing power & price paths",blurb:"Estimate what rising prices do to purchasing power and future spending needs."}].map((e,i)=>(0,a.jsxs)(n.motion.div,{className:"pcw-panel",initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-40px"},transition:{duration:.4,delay:.06*i,ease:s},children:[(0,a.jsx)("p",{className:"pcw-panel-title",children:e.title}),(0,a.jsx)("p",{className:"pcw-panel-body",children:e.blurb})]},e.title))}),(0,a.jsx)(i.default,{href:f(e,"/tools"),className:"pcw-btn-ghost",style:{marginTop:"1.5rem"},children:"See all calculators"})]})}),(0,a.jsx)("section",{className:"pcw-section","aria-label":"Find an advisor",children:(0,a.jsx)("div",{className:"pcw-container",children:(0,a.jsxs)(n.motion.div,{className:"pcw-match",initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5,ease:s},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"pcw-eyebrow",children:"Find an advisor"}),(0,a.jsx)("h2",{className:"pcw-section-title",children:"Read the guide. Run the numbers. Then talk to someone who does this for a living."}),(0,a.jsxs)("ol",{className:"pcw-match-steps",children:[(0,a.jsx)("li",{children:"Read a guide or run a calculator to frame your question."}),(0,a.jsx)("li",{children:"Answer a few short questions. Ranges are fine for money."}),(0,a.jsxs)("li",{children:["We review your answers, contact you to confirm what you need, and match you with a licensed financial advisor who specializes in ",c,"."]})]})]}),(0,a.jsxs)("div",{className:"pcw-match-side",children:[(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"pcw-btn-primary",style:{justifyContent:"center"},children:"Get matched with an advisor"}),(0,a.jsx)("p",{className:"pcw-match-note",children:"General education only. Asking to be matched creates no advisory relationship; the advisor gives you their own disclosures."})]})]})})}),(0,a.jsx)(y,{siteBasePath:e})]})}])},914949,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(468158),s=e.i(600951),r=e.i(271645),n=e.i(846932),o=e.i(772328);e.i(116233);var l=e.i(365587);let c=(0,e.i(525320).advisorNiche)("cafinancialadvisor.net").specialty;function d(){let e=(0,r.useRef)(null),i=(0,r.useRef)(0),t=(0,o.useReducedMotion)(),s=(0,r.useRef)(t);return(0,r.useEffect)(()=>{s.current=t},[t]),(0,r.useEffect)(()=>{let a=e.current;if(!a)return;let t=a.getContext("2d");if(!t)return;let r=0,n=0,o=0,l=0,c=[],d=[];function h(){r=a.offsetWidth,n=a.offsetHeight;let e=window.devicePixelRatio||1;a.width=Math.max(1,Math.round(r*e)),a.height=Math.max(1,Math.round(n*e)),t.setTransform(e,0,0,e,0,0)}function m(e){let a,i=(a=e,()=>{a|=0;let e=Math.imul((a=a+0x6d2b79f5|0)^a>>>15,1|a);return(((e=e+Math.imul(e^e>>>7,61|e)^e)^e>>>14)>>>0)/0x100000000});c=Array.from({length:30},()=>{let e=.035+.03*i(),a=-.02+.07*i(),t=[1],s=1,r=-1;for(let n=1;n<=24;n+=1)t.push(s-=e*Math.pow(1+a,n)*(1+(i()-.5)*.35)),r<0&&s<=0&&(r=n);return{y:t,cross:r}}),d=Array.from({length:25},(e,a)=>{let i=c.map(e=>e.y[a]).sort((e,a)=>e-a);return i[Math.floor(i.length/2)]})}function p(){(a.offsetWidth!==r||a.offsetHeight!==n)&&h();let e=s.current,g=e?1:Math.min(o/220,1),v=e||o<390?1:Math.max(0,1-(o-220-170)/40),u=24*g;t.clearRect(0,0,r,n);let b=r>900?.42*r:.05*r,f=.97*r,x=.16*n,y=.84*n,w=e=>b+e/24*(f-b),_=e=>x+(1.08-Math.max(e,-.55))/(1.08- -.55)*(y-x);t.globalAlpha=v,t.font="11px ui-monospace, Menlo, monospace",t.textAlign="center",t.fillStyle="rgba(169,182,198,0.55)",t.strokeStyle="rgba(124,142,166,0.16)",t.lineWidth=1;for(let e=0;e<=24;e+=6)t.beginPath(),t.moveTo(w(e),x),t.lineTo(w(e),y),t.stroke(),t.fillText(`M${e}`,w(e),y+18);function k(e,a){t.beginPath();let i=!1;for(let s=a;s<=24;s+=1){if(s>u){let i=s-1;if(i>=a&&i<u){let a=u-i,r=e[i]+(e[s]-e[i])*a;t.lineTo(w(u),_(r))}break}i?t.lineTo(w(s),_(e[s])):(t.moveTo(w(s),_(e[s])),i=!0)}t.stroke()}
21370t.beginPath(),t.moveTo(b,_(1)),t.lineTo(f,_(1)),t.stroke(),t.save(),t.setLineDash([6,6]),t.strokeStyle="rgba(245,181,68,0.6)",t.beginPath(),t.moveTo(b,_(0)),t.lineTo(f,_(0)),t.stroke(),t.restore(),t.lineWidth=1.2,c.forEach(e=>{t.strokeStyle="rgba(125,178,255,0.3)",k(e.y,0),e.cross>0&&(t.strokeStyle="rgba(245,181,68,0.55)",k(e.y,Math.max(e.cross-1,0)))}),t.lineWidth=2.4,t.strokeStyle="rgba(232,237,244,0.9)",k(d,0),t.globalAlpha=1,e||((o+=1)>=430&&(o=0,m(11+7*(l+=1))),i.current=requestAnimationFrame(p))}let g=new ResizeObserver(()=>{(a.offsetWidth!==r||a.offsetHeight!==n)&&(h(),s.current&&p())});return g.observe(a),h(),m(11),p(),()=>{g.disconnect(),cancelAnimationFrame(i.current)}},[]),(0,a.jsx)("canvas",{ref:e,className:"acd-fan-canvas","aria-hidden":!0})}let h=[{id:"base",label:"Base",g:.01,blurb:"Net burn grows 1% a month."},{id:"downside",label:"Downside",g:.04,blurb:"Net burn grows 4% a month: slower sales, rising costs."},{id:"upside",label:"Upside",g:-.01,blurb:"Net burn shrinks 1% a month: efficiency gains."}],m=e=>e>=1e6?`$${(e/1e6).toFixed(1)}M`:`$${Math.round(e/1e3)}k`;function p(){let e=(0,o.useReducedMotion)(),[i,t]=(0,r.useState)("base"),[s,l]=(0,r.useState)(14e4),c=h.find(e=>e.id===i),{bal:d,cashOut:p}=function(e,a){let i=[24e5],t=24e5,s=null;for(let r=1;r<=24;r+=1){let n=t;t-=e*Math.pow(1+a,r),null===s&&t<=0&&(s=r-1+n/(n-t)),i.push(Math.max(t,0))}return{bal:i,cashOut:s}}(s,c.g),g=e=>62+e/24*560,v=e=>18+(1-e/252e4)*246,u=d.map((e,a)=>`${0===a?"M":"L"}${g(a).toFixed(1)},${v(e).toFixed(1)}`).join(" "),b=`${u} L${g(24).toFixed(1)},${v(0).toFixed(1)} L${g(0).toFixed(1)},${v(0).toFixed(1)} Z`,f=null===p?null:Math.floor(p),x=null===p?"Cash lasts beyond month 24":`Cash reaches zero in month ${Math.ceil(p)} (about ${f} months of runway)`,y=.55*!e;return(0,a.jsxs)("div",{className:"acd-paper acd-runway",children:[(0,a.jsxs)("div",{className:"acd-runway-controls",children:[(0,a.jsxs)("fieldset",{className:"acd-fieldset",children:[(0,a.jsx)("legend",{className:"acd-legend",children:"Scenario"}),(0,a.jsx)("div",{className:"acd-seg",children:h.map(e=>(0,a.jsxs)("label",{className:"acd-seg-opt",children:[(0,a.jsx)("input",{type:"radio",name:"acd-scenario",value:e.id,checked:i===e.id,onChange:()=>t(e.id)}),(0,a.jsx)("span",{children:e.label})]},e.id))}),(0,a.jsx)("p",{className:"acd-hint",children:c.blurb})]}),(0,a.jsxs)("div",{className:"acd-field",children:[(0,a.jsxs)("label",{htmlFor:"acd-burn",className:"acd-legend",children:["Starting monthly net burn ",(0,a.jsx)("output",{className:"acd-mono",children:m(s)})]}),(0,a.jsx)("input",{id:"acd-burn",className:"acd-range",type:"range",min:6e4,max:24e4,step:5e3,value:s,"aria-valuetext":`${m(s)} per month`,onChange:e=>l(Number(e.target.value))})]}),(0,a.jsxs)("div",{className:"acd-readout","aria-live":"polite",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"acd-readout-l",children:"Cash-out"}),(0,a.jsx)("p",{className:"acd-readout-v acd-mono",children:null===p?"> M24":`M${Math.ceil(p)}`})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"acd-readout-l",children:"Runway"}),(0,a.jsx)("p",{className:"acd-readout-v acd-mono",children:null===f?"24+ mo":`${f} mo`})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"acd-readout-l",children:"Start cash"}),(0,a.jsx)("p",{className:"acd-readout-v acd-mono",children:m(24e5)})]})]})]}),(0,a.jsxs)("div",{className:"acd-runway-chart",children:[(0,a.jsxs)("svg",{viewBox:"0 0 640 300",className:"acd-chart-svg",role:"img","aria-label":`Cash balance over 24 months, ${c.label} scenario, starting burn ${m(s)} a month. ${x}.`,children:[(0,a.jsx)("defs",{children:(0,a.jsxs)("linearGradient",{id:"acd-area",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,a.jsx)("stop",{offset:"0%",stopColor:"#0a58ca",stopOpacity:"0.22"}),(0,a.jsx)("stop",{offset:"100%",stopColor:"#0a58ca",stopOpacity:"0"})]})}),[0,.6,1.2,1.8,2.4].map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:62,x2:622,y1:v(1e6*e),y2:v(1e6*e),stroke:"#d5dbe4",strokeWidth:"1"}),(0,a.jsx)("text",{x:54,y:v(1e6*e)+4,textAnchor:"end",fill:"#4a586a",className:"acd-mono acd-svg-t",children:0===e?"$0":`$${e.toFixed(1)}M`})]},e)),[0,6,12,18,24].map(e=>(0,a.jsx)("text",{x:g(e),y:288,textAnchor:"middle",fill:"#4a586a",className:"acd-mono acd-svg-t",children:`M${e}`},e)),(0,a.jsx)(n.motion.path,{d:b,fill:"url(#acd-area)",initial:!1,animate:{d:b},transition:{duration:y,ease:"easeOut"}}),(0,a.jsx)(n.motion.path,{d:u,fill:"none",stroke:"#0a58ca",strokeWidth:"3",strokeLinejoin:"round",strokeLinecap:"round",initial:!1,animate:{d:u},transition:{duration:y,ease:"easeOut"}}),null!==p&&(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:g(p),x2:g(p),y1:18,y2:v(0),stroke:"#8a5300",strokeWidth:"1.5",strokeDasharray:"5 5"}),(0,a.jsx)("circle",{cx:g(p),cy:v(0),r:"6",fill:"#f5b544",stroke:"#8a5300",strokeWidth:"2"}),(0,a.jsx)("text",{x:g(p)+(g(p)>352?-10:10),y:30,textAnchor:g(p)>352?"end":"start",fontWeight:"700",fill:"#8a5300",className:"acd-mono acd-svg-t",children:`Cash-out ≈ month ${Math.ceil(p)}`})]})]}),(0,a.jsxs)("p",{className:"acd-caption",children:["Illustrative model: made-up ",m(24e5)," starting cash, and net burn compounds monthly at the scenario rate. Not a forecast and not your numbers. Run your own on the tools page."]})]})]})}let g=[{slug:"ca-disability-insurance-basics",title:"California Disability Insurance Basics",pillar:"Insurance",desk:"Risk & benef
21370its",excerpt:"California runs one of the only state-mandated short-term disability programs in the country, and it works nothing like private long-term disability coverage. Understanding the difference — and the gap between them — matters for every California worker."},{slug:"ca-sdi-retirement-planning-interaction",title:"How California SDI Interacts With Retirement Planning",pillar:"Retirement",desk:"Risk & benefits",excerpt:"SDI benefits are largely tax-free, but the retirement-savings side effects of a leave are easy to miss until a 401(k) statement shows a gap that never got made up."},{slug:"california-community-property-rules",title:"Community Property Rules in California Divorce and Estate Planning",pillar:"Estate Planning",desk:"Family & estate",excerpt:"California's community property system shapes both divorce settlements and a lesser-known estate-planning advantage: the double step-up in basis available to married couples."},{slug:"california-residency-tax-remote-workers",title:"California Residency Tax Rules for Remote Workers",pillar:"Tax",desk:"Tax & entity",excerpt:"California doesn't use a simple day-count test for residency. Remote workers who move but keep meaningful ties to the state risk being taxed as full residents long after they thought they'd left."},{slug:"prop-13-inherited-property",title:"Prop 13 and Inherited Property in California",pillar:"Property Tax",desk:"Real assets",excerpt:"Proposition 13 caps how fast a property's taxable value can grow — but that cap resets when ownership changes, which is exactly what makes inherited property a distinct reassessment question."},{slug:"california-1031-exchange-basics",title:"California 1031 Exchange Basics for Real Estate Owners",pillar:"Real Estate",desk:"Real assets",excerpt:"Federal 1031 rules let real estate investors defer capital gains tax through a like-kind exchange — but California adds a clawback that keeps tracking deferred in-state gains even after the replacement property, or the owner, leaves the state."},{slug:"ca-credit-unions-vs-banks",title:"Comparing California Credit Unions vs Banks for Savings",pillar:"Banking",desk:"Cash & banking",excerpt:"Credit unions and banks both offer federally insured deposits, but their ownership structures create real, practical differences in rates, fees, and eligibility that are worth understanding before choosing where to keep savings."},{slug:"california-first-time-homebuyer-assistance",title:"California First-Time Homebuyer Assistance Programs",pillar:"Housing",desk:"Real assets",excerpt:"CalHFA's assistance programs use two very different structures — deferred silent-second loans and shared-appreciation loans — and understanding which one you're signing up for matters as much as qualifying in the first place."},{slug:"calstrs-calpers-pension-basics",title:"CalSTRS and CalPERS Pension Basics for Public Employees",pillar:"Public Employees",desk:"Risk & benefits",excerpt:"Both are defined-benefit pension systems built around a formula rather than an account balance — and a 2025 federal law repealing WEP and GPO just changed the Social Security picture for many members."},{slug:"small-business-tax-planning-california",title:"Small-Business Owner Tax Planning in California",pillar:"Small Business",desk:"Tax & entity",excerpt:"California layers its own franchise tax on top of federal small-business taxation, and entity choice, retirement plan design, and estimated tax discipline all carry real, California-specific consequences."}],v=["All","Risk & benefits","Tax & entity","Real assets","Family & estate","Cash & banking"];function u({siteBasePath:e}){let[t,s]=(0,r.useState)("All"),n=g.map((e,a)=>({...e,no:String(a+1).padStart(2,"0")})).filter(e=>"All"===t||e.desk===t);return(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"acd-chips",role:"group","aria-label":"Filter notes by desk",children:v.map(e=>(0,a.jsx)("button",{type:"button",className:"acd-chip","aria-pressed":t===e,onClick:()=>s(e),children:e},e))}),(0,a.jsxs)("p",{className:"acd-count acd-mono","aria-live":"polite",children:["Showing ",n.length," of ",g.length," notes"]}),(0,a.jsx)("ol",{className:"acd-ledger",children:n.map(t=>(0,a.jsxs)("li",{className:"acd-ledger-row",children:[(0,a.jsx)("span",{className:"acd-ledger-no acd-mono","aria-hidden":!0,
21370children:t.no}),(0,a.jsxs)("div",{children:[(0,a.jsx)(i.default,{href:f(e,`/blog/${t.slug}`),className:"acd-ledger-title",children:t.title}),(0,a.jsx)("p",{className:"acd-ledger-ex",children:t.excerpt})]}),(0,a.jsx)("span",{className:"acd-tag acd-mono",children:t.pillar})]},t.slug))})]})}let b=[{slug:"/blog",label:"Notes"},{slug:"/tools",label:"Tools"},{slug:"/services",label:"Coverage"},{slug:"/about",label:"About"}];function f(e,a){let i="/"===e?"":e.replace(/\/$/,"");return"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}function x({siteBasePath:e,currentSlug:t}){let{open:r,toggle:n}=(0,s.useMobileMenu)();return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("nav",{className:"acd-nav","aria-label":"Primary",children:[(0,a.jsxs)("div",{className:"acd-nav-inner",children:[(0,a.jsxs)(i.default,{href:f(e,"/"),className:"acd-nav-brand",children:[(0,a.jsxs)("svg",{width:"24",height:"22",viewBox:"0 0 24 22",fill:"none","aria-hidden":!0,children:[(0,a.jsx)("rect",{x:"1",y:"1",width:"22",height:"20",rx:"3",stroke:"currentColor",strokeWidth:"1.6",opacity:"0.5"}),(0,a.jsx)("path",{d:"M4 16l5-5 4 3 7-8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),(0,a.jsx)("span",{children:"Alta Capital Desk"})]}),(0,a.jsx)("div",{className:"acd-nav-links",children:b.map(s=>(0,a.jsx)(i.default,{href:f(e,s.slug),className:"acd-nav-link","aria-current":t===s.slug?"page":void 0,children:s.label},s.slug))}),(0,a.jsxs)("button",{type:"button",className:"acd-menu-btn","aria-expanded":r,"aria-controls":"acd-mobile-menu",onClick:n,children:[(0,a.jsx)("span",{className:"acd-menu-bars","aria-hidden":!0}),(0,a.jsx)("span",{children:r?"Close":"Menu"})]}),(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"acd-nav-cta",children:"Find an advisor"})]}),r?(0,a.jsxs)("div",{id:"acd-mobile-menu",className:"acd-mobile",children:[b.map(s=>(0,a.jsxs)(i.default,{href:f(e,s.slug),className:"acd-mobile-link","aria-current":t===s.slug?"page":void 0,children:[s.label,(0,a.jsx)("span",{"aria-hidden":!0,children:"→"})]},s.slug)),(0,a.jsxs)(i.default,{href:f(e,"/advisors"),className:"acd-mobile-link",children:["For advisors",(0,a.jsx)("span",{"aria-hidden":!0,children:"→"})]})]}):null]}),(0,a.jsx)("div",{className:"acd-sticky",children:(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"acd-btn-primary",children:"Find an advisor"})}),(0,a.jsx)("div",{id:"main-content",tabIndex:-1})]})}function y({siteBasePath:e}){return(0,a.jsx)("footer",{className:"acd-footer",role:"contentinfo",children:(0,a.jsxs)("div",{className:"acd-footer-inner",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"acd-footer-brand",children:"Alta Capital Desk"}),(0,a.jsx)("p",{className:"acd-footer-tagline",children:"An independent editorial desk for operators: capital, tax, and risk topics, with calculators that show their assumptions."})]}),(0,a.jsxs)("nav",{className:"acd-footer-links","aria-label":"Footer navigation",children:[(0,a.jsx)(i.default,{href:f(e,"/blog"),children:"Notes"}),(0,a.jsx)(i.default,{href:f(e,"/tools"),children:"Tools"}),(0,a.jsx)(i.default,{href:f(e,"/services"),children:"Coverage"}),(0,a.jsx)(i.default,{href:f(e,"/about"),children:"About"}),(0,a.jsx)(i.default,{href:f(e,"/contact"),children:"Contact"}),(0,a.jsx)(i.default,{href:f(e,"/advisors"),children:"For advisors"}),(0,a.jsx)(i.default,{href:f(e,"/privacy"),children:"Privacy"}),(0,a.jsx)(i.default,{href:f(e,"/terms"),children:"Terms"}),(0,a.jsx)(i.default,{href:f(e,"/disclaimer"),children:"Disclaimer"}),(0,a.jsx)(i.default,{href:f(e,"/editorial-policy"),children:"Editorial policy"}),(0,a.jsx)(i.default,{href:f(e,"/editorial-team"),children:"Editorial team"}),(0,a.jsx)(i.default,{href:f(e,"/do-not-sell"),children:"Do not sell"})]}),(0,a.jsx)("p",{className:"acd-footer-disclaimer",children:"Alta Capital Desk publishes general financial education and calculators. It is not personalized investment, tax, or legal advice, and no advisory relationship is formed by using it. The runway model on the home page uses made-up numbers for illustration and is not a forecast."})]})})}let w=[{title:"Compound trajectory lab",blurb:"Project how regular contributions grow over time under different return, fee, and timeline assumptions."}
21370,{title:"Recovery requirements",blurb:"See the gain required to recover from a loss, and how long recovery may take at different return rates."},{title:"Risk budgeting sketch",blurb:"Weigh potential upside against downside so position-sizing decisions stay deliberate."},{title:"Allocation drift check",blurb:"Compare your current mix against a target allocation and see where drift has crept in."}],_=[{slug:"/editorial-policy",title:"Editorial policy",blurb:"How the desk researches, sources, fact-checks, and corrects its coverage, and how editorial stays independent from advertising."},{slug:"/editorial-team",title:"Editorial team",blurb:"The editorial desk behind Alta Capital Desk, and how each page is reviewed."},{slug:"/disclaimer",title:"Disclaimer",blurb:"General education, not personalized advice, and no fiduciary relationship."}];e.s(["CaFinancialAdvisorNetContentPage",0,function({page:e,siteBasePath:i="",siteKey:s,siteName:r,after:n}){let o="/"===i?void 0:i;return(0,a.jsxs)("div",{className:"acd-shell shell-acd acd-content-shell",children:[(0,a.jsx)(t.SkipToContent,{}),(0,a.jsx)(x,{siteBasePath:i,currentSlug:e.slug}),(0,a.jsx)("main",{className:"acd-content-main",children:(0,a.jsxs)("div",{className:"acd-sheet",children:[(0,a.jsx)(l.BlockRenderer,{blocks:e.blocks.map(e=>"contrast"===e.surface?{...e,surface:"muted"}:e),pageSlug:e.slug,pageTitle:e.title,pathPrefix:o,siteKey:s,siteName:r,visualVariant:"finance"}),n]})}),(0,a.jsx)(y,{siteBasePath:i})]})},"CaFinancialAdvisorNetPage",0,function({siteBasePath:e=""}){return(0,a.jsxs)("div",{className:"acd-shell shell-acd",children:[(0,a.jsx)(t.SkipToContent,{}),(0,a.jsx)(x,{siteBasePath:e,currentSlug:"/"}),(0,a.jsxs)("section",{className:"acd-hero","aria-label":"Hero",children:[(0,a.jsxs)("div",{className:"acd-hero-canvas-wrap",children:[(0,a.jsx)(d,{}),(0,a.jsx)("div",{className:"acd-hero-scrim","aria-hidden":!0})]}),(0,a.jsx)("div",{className:"acd-hero-content",children:(0,a.jsxs)("div",{className:"acd-hero-inner acd-rise",children:[(0,a.jsx)("h1",{className:"acd-hero-title",children:"Capital decisions with scenarios, not slogans."}),(0,a.jsx)("p",{className:"acd-hero-body",children:"Runway, financing trade-offs, and governance topics for operators who already speak spreadsheet, with calculators that show their assumptions."}),(0,a.jsxs)("div",{className:"acd-hero-ctas",children:[(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"acd-btn-primary",children:"Get matched with an advisor"}),(0,a.jsx)(i.default,{href:f(e,"/tools"),className:"acd-btn-ghost",children:"Open operator tools"})]}),(0,a.jsxs)("ol",{className:"acd-hero-index acd-mono","aria-label":"On this desk",children:[(0,a.jsx)("li",{children:(0,a.jsxs)("a",{href:"#runway",children:[(0,a.jsx)("span",{children:"01"}),(0,a.jsx)("b",{children:"Runway model"}),(0,a.jsx)("i",{children:"one balance sheet, three futures"})]})}),(0,a.jsx)("li",{children:(0,a.jsxs)(i.default,{href:f(e,"/blog"),children:[(0,a.jsx)("span",{children:"02"}),(0,a.jsx)("b",{children:"Desk notes"}),(0,a.jsx)("i",{children:"financing, governance, cash"})]})}),(0,a.jsx)("li",{children:(0,a.jsxs)(i.default,{href:f(e,"/tools"),children:[(0,a.jsx)("span",{children:"03"}),(0,a.jsx)("b",{children:"Operator tools"}),(0,a.jsx)("i",{children:"calculators that show assumptions"})]})})]})]})})]}),(0,a.jsx)("section",{className:"acd-section",id:"runway","aria-label":"Runway scenarios",children:(0,a.jsxs)("div",{className:"acd-container",children:[(0,a.jsx)("p",{className:"acd-eyebrow acd-mono",children:"Scenario-first"}),(0,a.jsx)("h2",{className:"acd-section-title",children:"One balance sheet, three futures"}),(0,a.jsx)("p",{className:"acd-body-text",children:"Switch scenarios, move the burn rate, and watch the cash-out month shift. The numbers are illustrative; the habit of stress-testing before you decide is the point."}),(0,a.jsx)(p,{})]})}),(0,a.jsx)("section",{className:"acd-section acd-section--deep","aria-label":"Desk notes",children:(0,a.jsxs)("div",{className:"acd-container",children:[(0,a.jsx)("p",{className:"acd-eyebrow acd-mono",children:"Desk ledger"}),(0,a.jsx)("h2",{className:"acd-section-title",children:"Ten notes, filed by desk"}),(0,a.jsx)("p",{className:"acd-body-text",children:"California-specific notes on tax, property, benefits, and banking."}),(0,a.jsx)(u,{siteBasePath:e})]})}),(0,a.jsx)("section",{className:"acd-section","aria-label":"Calculators",children:(0,a.jsxs)("div",{className:"acd-container",children:[(0,a.jsx)("p",{className:"acd-eyebrow acd-mono",children:"Model shelf"}),(0,a.jsx)("h2",{className:"acd-section-title",children:"Calculators you can stress-test"}),(0,a.jsx)("p",{className:"acd-body-text",children:"Free, in-browser calculators. Change any assumption and the output updates instantly."}),(0,a.jsx)("div",{className:"acd-grid-4",children:w.map((t,s)=>(0,a.jsxs)(i.default,{href:f(e,"/tools"),className:"acd-card",children:[(0,a.jsx)("span",{className:"acd-card-tag acd-mono",children:String(s+1).padStart(2,"0")}),(0,a.jsx)("span",{className:"acd-card-title",children:t.title}),(0,a.jsx)("span",{className:"acd-card-body",children:t.blurb})]},t.title))}),(0,a.jsx)(i.default,{href:f(e,"/tools"),className:"acd-btn-ghost",style:{marginTop:"1.5rem"},children:"See all 7 calculators"})]})}),(0,a.jsx)("section",{className:"acd-section acd-section--deep","aria-label":"Ground rules",children:(0,a.jsxs)("div",{className:"acd-container",children:[(0,a.jsx)("p",{className:"acd-eyebrow acd-mono",children:"Ground rules"}),(0,a.jsx)("h2",{className:"acd-section-title",children:"Read the rules before the numbers"}),(0,a.jsx)("div",{className:"acd-grid-3",children:_.map(t=>(0,a.jsxs)(i.default,{href:f(e,t.slug),className:"acd-rule",children:[(0,a.jsx)("span",{className:"acd-rule-title",children:t.title}),(0,a.jsx)("span",{className:"acd-rule-body",children:t.blurb}
21370),(0,a.jsx)("span",{className:"acd-rule-go","aria-hidden":!0,children:"Read →"})]},t.slug))})]})}),(0,a.jsx)("section",{className:"acd-section acd-section--deep","aria-label":"Find an advisor",children:(0,a.jsx)("div",{className:"acd-container",children:(0,a.jsxs)("div",{className:"acd-match",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"acd-eyebrow acd-mono",children:"Find an advisor"}),(0,a.jsx)("h2",{className:"acd-section-title",children:"Model it here. Then talk to someone who does this for a living."}),(0,a.jsxs)("ol",{className:"acd-match-steps acd-mono",children:[(0,a.jsx)("li",{children:"Run a scenario or read a note to frame the decision."}),(0,a.jsx)("li",{children:"Answer a few short questions. Ranges are fine for money."}),(0,a.jsxs)("li",{children:["We review your answers, contact you to confirm what you need, and match you with a licensed financial advisor who specializes in ",c,"."]})]})]}),(0,a.jsxs)("div",{className:"acd-match-side",children:[(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"acd-btn-primary",style:{justifyContent:"center"},children:"Get matched with an advisor"}),(0,a.jsx)("p",{className:"acd-match-note",children:"General education only. Asking to be matched creates no advisory relationship; the advisor gives you their own disclosures."})]})]})})}),(0,a.jsx)(y,{siteBasePath:e})]})}])},849481,36831,514827,710965,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(618566),s=e.i(271645);let r=[{slug:"equity-compensation-basics-rsu-options-espp",title:"Equity Compensation Basics: RSUs, Stock Options, and ESPPs for Executives",pillar:"Equity events",area:"equity",read:4,excerpt:"Three instruments, three different tax mechanics, three different risk profiles. Treating them as interchangeable 'equity comp' is the first mistake most executives make."},{slug:"10b5-1-trading-plans-explained",title:"10b5-1 Trading Plans Explained: Structure, Timing, and Common Missteps",pillar:"Liquidity & tax coordination",area:"liquidity",read:4,excerpt:"A properly adopted 10b5-1 plan is one of the few legal ways insiders can trade during a blackout. Adopting one at the wrong moment defeats its own purpose."},{slug:"deferred-compensation-plan-tradeoffs",title:"Deferred Compensation Plans: Weighing the Real Tradeoffs",pillar:"Liquidity & tax coordination",area:"liquidity",read:4,excerpt:"Deferring income to a lower future tax bracket sounds simple. In practice, an unsecured promise from your employer carries a risk most executives underprice."},{slug:"concentrated-stock-position-risk-management",title:"Managing Concentrated Stock Position Risk Without Signaling",pillar:"Risk",area:"risk",read:4,excerpt:"Executives face a real conflict: reducing concentration is prudent risk management, but selling company stock can be read by the market as a lack of confidence."},{slug:"golden-parachute-severance-tax-planning",title:"Golden Parachute and Severance Tax Planning for Departing Executives",pillar:"Risk",area:"risk",read:4,excerpt:"A change-in-control severance package that looks generous on paper can trigger an excise tax that quietly claws back a meaningful share of it."},{slug:"amt-exposure-iso-exercises",title:"AMT Exposure From ISO Exercises: What Executives Need to Model",pillar:"Equity events",area:"equity",read:4,excerpt:"Exercising incentive stock options can trigger a tax bill on paper gains you have not actually realized in cash. The alternative minimum tax is where that happens."},{slug:"executive-disability-key-person-insurance",title:"Executive Disability and Key-Person Insurance: Two Different Problems",pillar:"Risk",area:"risk",read:4,excerpt:"One protects your household income. The other protects the company's balance sheet. Executives who only think about one leave a real gap in the other."},{slug:"timing-equity-vesting-around-liquidity-events",title:"Timing Equity Vesting Around Liquidity Events",pillar:"Equity events",area:"equity",read:4,excerpt:"A merger, secondary offering, or IPO lockup expiration can collide with your normal vesting calendar in ways that concentrate both tax liability and market r
21370isk into a single quarter."},{slug:"board-compensation-tax-treatment",title:"How Board Compensation Is Actually Taxed",pillar:"Liquidity & tax coordination",area:"liquidity",read:4,excerpt:"Cash retainers, equity grants, and committee fees for board service are taxed differently than most directors assume — and the self-employment tax question surprises people every year."},{slug:"philanthropic-giving-strategies-high-earners",title:"Philanthropic Giving Strategies for High Earners: DAFs and Charitable Trusts, Plainly Explained",pillar:"Liquidity & tax coordination",area:"liquidity",read:4,excerpt:"Donor-advised funds and charitable trusts get pitched as tax hacks. They are actually structural decisions about control, timing, and irrevocability worth understanding on their own terms."}];function n(e,a){let i="/"===e?"":e.replace(/\/$/,"");return"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}let o=[{slug:"/blog",label:"Briefings"},{slug:"/tools",label:"Models"},{slug:"/services",label:"Coverage"},{slug:"/about",label:"About"}];function l(e){let a=Math.abs(e),i=e<0?"-":"";return a>=1e6?`${i}$${(a/1e6).toFixed(a>=1e7?1:2).replace(/\.?0+$/,"")}M`:a>=1e3?`${i}$${Math.round(a/1e3)}k`:`${i}$${Math.round(a)}`}let c={equity:"Equity compensation (RSUs, options, ESPP)",concentrated:"A concentrated stock position",tenb:"A 10b5-1 plan or trading windows",deferred:"Deferred compensation",severance:"Severance or a change in control",liquidity:"A liquidity event (merger, IPO, secondary)",board:"Board compensation",philanthropy:"Philanthropic planning",insurance:"Insurance and risk protection",review:"A full portfolio and wealth review"},d={"equity-compensation-basics-rsu-options-espp":c.equity,"10b5-1-trading-plans-explained":c.tenb,"deferred-compensation-plan-tradeoffs":c.deferred,"concentrated-stock-position-risk-management":c.concentrated,"golden-parachute-severance-tax-planning":c.severance,"amt-exposure-iso-exercises":c.equity,"executive-disability-key-person-insurance":c.insurance,"timing-equity-vesting-around-liquidity-events":c.liquidity,"board-compensation-tax-treatment":c.board,"philanthropic-giving-strategies-high-earners":c.philanthropy},h={equity:c.equity,liquidity:c.tenb,risk:c.concentrated};function m(){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/clevel/fonts/cormorant-roman.woff2"}),(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/clevel/fonts/cormorant-italic.woff2"}),(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/clevel/fonts/hanken.woff2"})]})}function p({size:e=30}){return(0,a.jsxs)("svg",{width:e,height:e,viewBox:"0 0 32 32",fill:"none","aria-hidden":!0,className:"apx-mark",children:[(0,a.jsx)("path",{d:"M5 27 16 5l11 22",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"square"}),(0,a.jsx)("path",{d:"M9.6 20h12.8",stroke:"var(--apx-gold)",strokeWidth:"2.2",strokeLinecap:"square"})]})}e.s(["AREAS",0,[{id:"equity",name:"Equity events",blurb:"RSUs, options and ESPPs; AMT exposure from ISO exercises; and timing vesting around mergers, secondaries and IPO lockups."},{id:"liquidity",name:"Liquidity & tax coordination",blurb:"10b5-1 trading plans, deferred compensation elections, board compensation tax treatment, and charitable structures such as donor-advised funds."},{id:"risk",name:"Risk",blurb:"Concentrated stock positions, change-in-control severance and excise-tax exposure, and disability and key-person insurance."}],"BRIEFINGS",0,r,"NAV",0,o,"SPECIALTY",0,"executive wealth management","TOPIC",0,c,"TOPIC_BY_AREA",0,h,"TOPIC_BY_SLUG",0,d,"apexHref",0,n,"briefingBySlug",0,function(e){return r.find(a=>a.slug===e)},"money",0,l,"scrollToAdvisor",0,function(){let e=document.getElementById("advisor");if(!e)return;let a=window.matchMedia("(prefers-reduced-motion: reduce)").matches;e.scrollIntoView({behavior:a?"auto":"smooth",block:"start"})}],36831),e.s(["ApexFooter",0,function({siteBasePath:e}){return(0,a.jsx)("footer",{className:"apx-footer",children:(0,a.jsxs)("div",{className:"apx-footer-inner",children:[(0,a.jsxs)("div",{className:"apx-footer-brand",children:[(0,a.jsxs)("div",{className:"apx-footer-logo",children:[(0,a.jsx)(p,{size:28}),(0,a.jsxs)("span",{className:"apx-brand-name",children:["Apex ",(0,a.jsx)("em",{children:"Wealth Desk"})]})]}),(0,a.jsx)("p",{className:"apx-footer-tag",children:"Briefings and models for executives and directors, and a match with a licensed financial advisor when you are ready."}),(0,a.jsx)(i.default,{href:n(e,"/contact#advisor"),className:"apx-btn apx-btn--gold apx-btn--sm",children:"Find an advisor"})]}),(0,a.jsxs)("nav",{className:"apx-footer-cols","aria-label":"Footer",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"apx-footer-h",children:"Read"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:n(e,"/blog"),children:"Briefings"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:n(e,"/tools"),children:"Models"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:n(e,"/services"),children:"Coverage"})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"apx-footer-h",children:"The desk"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:n(e,"/about"),children:"About"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:n(e,"/editorial-policy"),children:"Editorial policy"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:n(e,"/editorial-team"),children:"Editorial team"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:n(e,"/contact"),children:"Contact"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:n(e,"/advisors"),children:"For advisors"})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"apx-footer-h",children:"Legal"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:n(e,"/privacy"),children:"Privacy"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:n(e,"/terms"),children:"Terms"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:n(e,"/disclaimer"),children:"Disclaimer"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:n(e,"/do-not-sell"),children:"Do not sell or share"})})]})]})]}),(0,a.jsx)("p",{className:"apx-footer-note",children:"Apex Wealth Desk is an educational publisher. It does not give personalized investment, tax or legal advice, recommend securities or manage money, and no advisory relationship is formed by reading it or asking to be matched. Any relationship is between you and the licensed financial advisor you are matched with, under that advisor’s own agreement and disclosures. Please do not send material nonpublic information. The models are simplified illustrations, not forecasts."})]})})},"ApexNav",0,function({siteBasePath:e,currentSlug:r}
21370){let[l,c]=(0,s.useState)(!1),d=(0,t.usePathname)(),h="/"===r?"#advisor":n(e,"/contact#advisor");return(0,s.useEffect)(()=>{c(!1)},[d]),(0,s.useEffect)(()=>{if(!l)return;let e=e=>{"Escape"===e.key&&c(!1)};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[l]),(0,a.jsxs)("header",{className:"apx-nav",children:[(0,a.jsxs)("div",{className:"apx-nav-inner",children:[(0,a.jsxs)(i.default,{href:n(e,"/"),className:"apx-brand","aria-label":"Apex Wealth Desk, home",children:[(0,a.jsx)(p,{}),(0,a.jsxs)("span",{className:"apx-brand-name",children:["Apex ",(0,a.jsx)("em",{children:"Wealth Desk"})]})]}),(0,a.jsx)("nav",{className:"apx-nav-links","aria-label":"Primary",children:o.map(t=>(0,a.jsx)(i.default,{href:n(e,t.slug),className:"apx-nav-link","aria-current":r===t.slug||"/blog"===t.slug&&r?.startsWith("/blog/")?"page":void 0,children:t.label},t.slug))}),(0,a.jsxs)("div",{className:"apx-nav-right",children:[(0,a.jsx)(i.default,{href:h,className:"apx-btn apx-btn--solid apx-btn--sm",children:"Find an advisor"}),(0,a.jsxs)("button",{type:"button",className:"apx-menu-btn","aria-expanded":l,"aria-controls":"apx-mobile-menu",onClick:()=>c(e=>!e),children:[(0,a.jsx)("span",{className:"apx-menu-bars","aria-hidden":!0}),(0,a.jsx)("span",{children:l?"Close":"Menu"})]})]})]}),l?(0,a.jsx)("nav",{id:"apx-mobile-menu",className:"apx-mobile","aria-label":"Mobile",children:o.map(t=>(0,a.jsx)(i.default,{href:n(e,t.slug),className:"apx-mobile-link",children:t.label},t.slug))}):null]})},"ApexShell",0,function({children:e}){return(0,a.jsxs)("div",{className:"apx-shell-root",children:[(0,a.jsx)(m,{}),(0,a.jsx)("a",{className:"apx-skip",href:"#main-content",children:"Skip to main content"}),e]})},"ApexSticky",0,function({siteBasePath:e,currentSlug:t}){let s="/"===t?"#advisor":n(e,"/contact#advisor");return(0,a.jsx)("div",{className:"apx-sticky",children:(0,a.jsx)(i.default,{href:s,className:"apx-btn apx-btn--solid",children:"Find an advisor"})})}],849481);var g=e.i(247167),v=e.i(3303);let u=g.default.env.NEXT_PUBLIC_TURNSTILE_SITE_KEY;function b({id:e,label:i,value:t,min:s,max:r,step:n,format:o,onChange:l}){return(0,a.jsxs)("div",{className:"apx-field",children:[(0,a.jsxs)("label",{htmlFor:e,className:"apx-label",children:[(0,a.jsx)("span",{children:i}),(0,a.jsx)("output",{htmlFor:e,className:"apx-mono apx-label-val",children:o(t)})]}),(0,a.jsx)("input",{id:e,className:"apx-range",type:"range",min:s,max:r,step:n,value:t,"aria-valuetext":o(t),onChange:e=>l(Number(e.target.value))})]})}function f({label:e,value:i,tone:t}){return(0,a.jsxs)("div",{className:`apx-read${t?` apx-read--${t}`:""}`,children:[(0,a.jsx)("p",{className:"apx-read-l",children:e}),(0,a.jsx)("p",{className:"apx-read-v apx-mono",children:i})]})}e.s(["ApexForm",0,function({block:e,siteKey:i,siteName:t,pageSlug:r,pageTitle:n,presetTopic:o,variant:l="client"}){let c=e.steps??[{title:e.title}],d=c.length,[h,m]=(0,s.useState)(1),[p,g]=(0,s.useState)(""),[b,f]=(0,s.useState)(!1),[x,y]=(0,s.useState)({kind:"idle"}),w=(0,s.useRef)(null),_=(0,s.useRef)(null),k=(0,s.useRef)(null);(0,s.useEffect)(()=>{o&&(g(o),m(1))},[o]);let j=()=>window.setTimeout(()=>_.current?.focus(),0);function N(){(function(e){let a=w.current;if(!a)return!0;for(let i of Array.from(a.querySelectorAll(`[data-step="${e}"] input, [data-step="${e}"] select, [data-step="${e}"] textarea`)))if(!i.reportValidity())return!1;return!0})(h)&&(m(e=>Math.min(e+1,d)),j())}async function S(a){if(a.preventDefault(),h<d)return void N();let s=a.currentTarget,o=new FormData(s),l=String(o.get("company_website")??"").trim(),c=String(o.get("cf-turnstile-response")??"").trim(),p={};for(let[e,a]of o.entries())"company_website"!==e&&"cf-turnstile-response"!==e&&"string"==typeof a&&(p[e]=a.trim());f(!0);try{let a=await fetch("/api/leads",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({siteKey:i,siteName:t,pageSlug:r,pageTitle:n,sourceUrl:window.location.href,honeypot:l,turnstileToken:c,fields:p})}),o=await a.json().catch(()=>null);if(!a.ok)throw Error(o?.message??"We could not send your request just now. Please try again.");s.reset(),g(""),m(1),y({kind:"success",message:e.successMessage??"Thank you. We have your request."}),window.setTimeout(()=>
21370k.current?.focus(),0)}catch(e){y({kind:"error",message:e instanceof Error?e.message:"We could not send your request just now. Please try again."})}finally{f(!1)}}if("success"===x.kind)return(0,a.jsxs)("div",{ref:k,tabIndex:-1,className:"apx-quiz apx-quiz--done",role:"status",children:[(0,a.jsx)("p",{className:"apx-eyebrow apx-mono",children:"advisor"===l?"Application received":"Request received"}),(0,a.jsx)("h3",{className:"apx-h3",children:"Thank you."}),(0,a.jsx)("p",{children:x.message}),"advisor"===l?null:(0,a.jsxs)("ol",{className:"apx-done-steps",children:[(0,a.jsx)("li",{children:"We review your answers."}),(0,a.jsx)("li",{children:"We contact you to confirm what you need."}),(0,a.jsx)("li",{children:"We match you with a licensed financial advisor who specializes in this area. You decide what happens next."})]})]});let A=e=>{let i=`apx-q-${e.name}`,t=e.required??!1;if("hidden"===e.type)return(0,a.jsx)("input",{type:"hidden",name:e.name,value:e.value??""},e.name);if("checkbox"===e.type)return(0,a.jsxs)("label",{className:"apx-check",children:[(0,a.jsx)("input",{type:"checkbox",name:e.name,value:"yes",required:t}),(0,a.jsx)("span",{children:e.label})]},e.name);let s=(0,a.jsxs)("label",{htmlFor:i,className:"apx-form-label",children:[e.label,t||e.label.toLowerCase().includes("optional")?null:(0,a.jsx)("span",{className:"apx-req",children:" (optional)"})]});if("select"===e.type){let r="help_topic"===e.name;return(0,a.jsxs)("div",{className:"apx-form-row",children:[s,(0,a.jsxs)("select",{id:i,name:e.name,required:t,className:"apx-input apx-select",...r?{value:p,onChange:e=>g(e.target.value)}:{defaultValue:""},children:[(0,a.jsx)("option",{value:"",disabled:!0,children:"Select…"}),(e.options??[]).map(e=>(0,a.jsx)("option",{value:e,children:e},e))]})]},e.name)}return"textarea"===e.type?(0,a.jsxs)("div",{className:"apx-form-row",children:[s,(0,a.jsx)("textarea",{id:i,name:e.name,required:t,rows:4,className:"apx-input"})]},e.name):(0,a.jsxs)("div",{className:"apx-form-row",children:[s,(0,a.jsx)("input",{id:i,name:e.name,type:e.type,required:t,className:"apx-input",autoComplete:"email"===e.name?"email":"phone"===e.name?"tel":"full_name"===e.name?"name":"location"===e.name?"postal-code":"off"})]},e.name)};return(0,a.jsxs)("form",{ref:w,className:"apx-quiz",onSubmit:S,children:[(0,a.jsxs)("div",{className:"apx-quiz-progress",children:[(0,a.jsxs)("p",{className:"apx-mono apx-quiz-count",children:["Step ",h," of ",d]}),(0,a.jsx)("div",{className:"apx-quiz-bar","aria-hidden":!0,children:c.map((e,i)=>(0,a.jsx)("span",{className:i<h?"is-on":""},e.title))})]}),c.map((i,t)=>(0,a.jsxs)("div",{"data-step":t+1,hidden:h!==t+1,className:"apx-quiz-step",children:[(0,a.jsx)("h3",{ref:h===t+1?_:void 0,tabIndex:-1,className:"apx-quiz-h",children:i.title}),i.description?(0,a.jsx)("p",{className:"apx-quiz-d",children:i.description}):null,e.fields.filter(e=>(e.step??1)===t+1).map(A)]},i.title)),(0,a.jsxs)("label",{className:"apx-hp","aria-hidden":"true",children:[(0,a.jsx)("span",{children:"Leave this blank"}),(0,a.jsx)("input",{autoComplete:"off",name:"company_website",tabIndex:-1,type:"text"})]}),u?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(v.default,{src:"https://challenges.cloudflare.com/turnstile/v0/api.js",strategy:"afterInteractive",async:!0,defer:!0}),(0,a.jsx)("div",{className:"cf-turnstile","data-sitekey":u,"data-theme":"light"})]}):null,(0,a.jsxs)("div",{className:"apx-quiz-nav",children:[h>1?(0,a.jsx)("button",{type:"button",className:"apx-btn apx-btn--line",onClick:function(){m(e=>Math.max(1,e-1)),j()},children:"Back"}):null,h<d?(0,a.jsx)("button",{type:"button",className:"apx-btn apx-btn--solid",onClick:N,children:"Next"}):(0,a.jsx)("button",{type:"submit",className:"apx-btn apx-btn--solid",disabled:b,children:b?"Sending…":e.submitLabel??"Get matched with an advisor"})]}),e.disclosure?(0,a.jsx)("p",{className:"apx-form-caution",children:e.disclosure}):null,"advisor"===l?null:(0,a.jsx)("p",{className:"apx-form-caution",children:"Please do not include material nonpublic information, account numbers, or anything covered by a confidentiality obligation."}),(0,a.jsx)("div",{className:`apx-status${"error"===x.kind?" apx-status--error":""}`,role:"error"===x.kind?"alert":"status",children:"error"===x.kind?x.message:""})]})}],514827),e.s(["ConcentrationModel",0,function({compact:e=!1}
21370){let[i,t]=(0,s.useState)(55),[r,n]=(0,s.useState)(20),[o,l]=(0,s.useState)(8),[c,d]=(0,s.useState)(35),h=i/100,m=Math.min(r,i)/100,p=c/100,g=(h-m)/o,v=Array.from({length:o+1},(e,a)=>h-a/o*(h-m)),u=e=>52+e/(o+1)*572,x=e=>16+(1-e)*224,y=`M${u(0).toFixed(1)},${x(v[0]??h).toFixed(1)}`;for(let e=1;e<=o;e+=1)y+=` H${u(e).toFixed(1)} V${x(v[e]??m).toFixed(1)}`;y+=` H${u(o+1).toFixed(1)}`;let w=`${y} V${x(0).toFixed(1)} H${u(0).toFixed(1)} Z`,_=h*p*100,k=m*p*100,j=h<=m+1e-9,N=j?`Target of ${r}% is at or above today's ${i}%, so no sales are needed.`:`Concentration steps from ${i}% down to ${r}% over ${o} trading windows.`,S=o>12?4:o>6?2:1,A=x(m)-x(v[0]??h),z=x(0)-x(m);return(0,a.jsxs)("div",{className:`apx-model${e?" apx-model--compact":""}`,children:[(0,a.jsxs)("div",{className:"apx-model-controls",children:[(0,a.jsx)(b,{id:"apx-conc",label:"Employer stock, share of net worth",value:i,min:10,max:90,step:1,format:e=>`${e}%`,onChange:t}),(0,a.jsx)(b,{id:"apx-target",label:"Target share",value:r,min:5,max:40,step:1,format:e=>`${e}%`,onChange:n}),(0,a.jsx)(b,{id:"apx-windows",label:"Open trading windows used (about one a quarter)",value:o,min:2,max:16,step:1,format:e=>`${e}`,onChange:l}),(0,a.jsx)(b,{id:"apx-shock",label:"Stress: share price falls by",value:c,min:10,max:60,step:5,format:e=>`${e}%`,onChange:d}),(0,a.jsxs)("div",{className:"apx-reads","aria-live":"polite",children:[(0,a.jsx)(f,{label:"Sold per window",value:j?"none":`${(100*g).toFixed(1)}% of net worth`}),(0,a.jsx)(f,{label:"Stress hit today",value:`-${_.toFixed(0)}% of net worth`,tone:"burgundy"}),(0,a.jsx)(f,{label:"Stress hit at target",value:`-${k.toFixed(0)}% of net worth`,tone:"gold"})]})]}),(0,a.jsxs)("div",{className:"apx-model-chart",children:[(0,a.jsxs)("svg",{viewBox:"0 0 640 280",className:"apx-chart",role:"img","aria-label":`${N} A ${c}% share-price fall would cost ${_.toFixed(0)}% of net worth today and ${k.toFixed(0)}% at the target.`,children:[[0,.25,.5,.75,1].map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:52,x2:624,y1:x(e),y2:x(e),className:"apx-grid"}),(0,a.jsx)("text",{x:44,y:x(e)+4,textAnchor:"end",className:"apx-svg-t apx-mono",children:`${100*e}%`})]},e)),(0,a.jsx)("line",{x1:52,x2:624,y1:x(m),y2:x(m),className:"apx-target-line"}),(0,a.jsx)("text",{x:60,y:A>=28?x(m)-7:z>=26?x(m)+17:x(m)-7,textAnchor:"start",className:"apx-svg-t apx-svg-t--gold apx-mono",children:`Target ${r}%`}),(0,a.jsx)("path",{d:w,className:"apx-stair-area"}),(0,a.jsx)("path",{d:y,className:"apx-stair",fill:"none"}),v.map((e,i)=>(0,a.jsx)("circle",{cx:u(i),cy:x(e),r:0===i||i===o?4.5:3,className:0===i?"apx-dot apx-dot--start":"apx-dot"},i)),Array.from({length:o+1},(e,a)=>a).filter(e=>0===e||e===o||e%S==0).map(e=>(0,a.jsx)("text",{x:u(e),y:266,textAnchor:"middle",className:"apx-svg-t apx-mono",children:0===e?"Today":`W${e}`},e))]}),(0,a.jsx)("p",{className:"apx-caption",children:"Simplified: prices stay flat between windows, proceeds are reinvested outside the stock, and taxes and trading costs are ignored. A 10b5-1 plan or your company’s policy may change how and when you can sell."})]})]})},"DeferredModel",0,function(){let[e,i]=(0,s.useState)(2e6),[t,r]=(0,s.useState)(6),[n,o]=(0,s.useState)(5),[c,d]=(0,s.useState)(2),[h,m]=(0,s.useState)(25),p=Math.pow(1-c/100,t),g=p+h/100*(1-p),v=e/Math.pow(1+n/100,t),u=v*g,x=(1-g)*100,y=[{label:"Balance on paper",value:e,cls:"apx-bar--face"},{label:"Worth today, if the promise were risk-free",value:v,cls:"apx-bar--clean"},{label:"Worth today, with company risk priced in",value:u,cls:"apx-bar--risk"}];return(0,a.jsxs)("div",{className:"apx-model",children:[(0,a.jsxs)("div",{className:"apx-model-controls",children:[(0,a.jsx)(b,{id:"apx-bal",label:"Deferred balance",value:e,min:25e4,max:1e7,step:5e4,format:l,onChange:i}),(0,a.jsx)(b,{id:"apx-years",label:"Years until it is paid",value:t,min:1,max:15,step:1,format:e=>`${e}`,onChange:r}),(0,a.jsx)(b,{id:"apx-disc",label:"Your discount rate",value:n,min:2,max:10,step:.5,format:e=>`${e}%`,onChange:o}),(0,a.jsx)(b,{id:"apx-risk",label:"Chance of company distress, per year",value:c,min:0,max:10,step:.5,format:e=>`${e}%`,onChange:d}),(0,a.jsx)(b,{id:"apx-rec",label:"Share recovered as an unsecured creditor",value:h,min:0,max:60,step:5,format:e=>`${e}%`,onChange:m}),(0,a.jsxs)("div",{className:"apx-reads","aria-live":"polite",children:[(0,a.jsx)(f,{label:"Paid in full",value:`${(100*p).toFixed(0)}%`}),(0,a.jsx)(f,{label:"Risk haircut",value:`${x.toFixed(1)}
21370%`,tone:"burgundy"}),(0,a.jsx)(f,{label:"Value lost today",value:l(v-u),tone:"burgundy"})]})]}),(0,a.jsxs)("div",{className:"apx-model-chart",children:[(0,a.jsx)("div",{className:"apx-bars",role:"img","aria-label":`A ${l(e)} deferred balance paid in ${t} years is worth ${l(v)} today if risk-free and ${l(u)} once company risk is priced in, a ${x.toFixed(1)}% haircut.`,children:y.map(i=>(0,a.jsxs)("div",{className:"apx-bar-row",children:[(0,a.jsx)("p",{className:"apx-bar-l",children:i.label}),(0,a.jsx)("div",{className:"apx-bar-track",children:(0,a.jsx)("div",{className:`apx-bar ${i.cls}`,style:{width:`${Math.max(2,i.value/e*100)}%`}})}),(0,a.jsx)("p",{className:"apx-bar-v apx-mono",children:l(i.value)})]},i.label))}),(0,a.jsx)("p",{className:"apx-caption",children:"Deferred compensation is usually an unsecured promise from your employer, so it ranks with other unsecured creditors if the company fails. Illustrative arithmetic only; plan terms, funding vehicles and taxes vary."})]})]})},"ParachuteModel",0,function(){let[e,i]=(0,s.useState)(9e5),[t,r]=(0,s.useState)(35e5),n=3*e,o=a=>a>=n?a-.2*(a-e):a,c=t>=n?.2*(t-e):0,d=Math.max(6*e,1.1*t),h=e=>56+e/d*568,m=e=>16+(1-e/d)*224,p=`M${h(0).toFixed(1)},${m(0).toFixed(1)} L${h(n).toFixed(1)},${m(n).toFixed(1)} L${h(n).toFixed(1)},${m(o(n)).toFixed(1)} L${h(d).toFixed(1)},${m(o(d)).toFixed(1)}`,g=[0,.25,.5,.75,1].map(e=>e*d),v=t<n?`Payments of ${l(t)} sit below the ${l(n)} line, so no excise tax applies in this simplified model.`:`Payments of ${l(t)} cross the ${l(n)} line: excise tax of ${l(c)} on the ${l(t-e)} above one times base.`;return(0,a.jsxs)("div",{className:"apx-model",children:[(0,a.jsxs)("div",{className:"apx-model-controls",children:[(0,a.jsx)(b,{id:"apx-base",label:"Base amount (average W-2 pay, prior five years)",value:e,min:3e5,max:5e6,step:5e4,format:l,onChange:i}),(0,a.jsx)(b,{id:"apx-pay",label:"Total change-in-control payments",value:t,min:0,max:2e7,step:1e5,format:l,onChange:r}),(0,a.jsxs)("div",{className:"apx-reads","aria-live":"polite",children:[(0,a.jsx)(f,{label:"Line (3× base)",value:l(n)}),(0,a.jsx)(f,{label:"Excise tax (20%)",value:l(c),tone:"burgundy"}),(0,a.jsx)(f,{label:"You keep, before income tax",value:l(o(t)),tone:"gold"})]}),(0,a.jsxs)("p",{className:"apx-note-inline",children:["Above roughly 3.5× base (",l(3.5*e),"), taking the full package leaves you with more than cutting it back to just under the line."]})]}),(0,a.jsxs)("div",{className:"apx-model-chart",children:[(0,a.jsxs)("svg",{viewBox:"0 0 640 280",className:"apx-chart",role:"img","aria-label":v,children:[g.map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:56,x2:624,y1:m(e),y2:m(e),className:"apx-grid"}),(0,a.jsx)("text",{x:48,y:m(e)+4,textAnchor:"end",className:"apx-svg-t apx-mono",children:l(e)}),(0,a.jsx)("text",{x:h(e),y:266,textAnchor:"middle",className:"apx-svg-t apx-mono",children:l(e)})]},e)),(0,a.jsx)("line",{x1:h(0),y1:m(0),x2:h(d),y2:m(d),className:"apx-ref-line"}),(0,a.jsx)("line",{x1:h(n),x2:h(n),y1:16,y2:m(0),className:"apx-target-line"}),(0,a.jsx)("text",{x:h(n)+6,y:28,className:"apx-svg-t apx-svg-t--gold apx-mono",children:"3× base"}),(0,a.jsx)("path",{d:p,className:"apx-cliff",fill:"none"}),(0,a.jsx)("circle",{cx:h(t),cy:m(o(t)),r:"6",className:"apx-marker"})]}),(0,a.jsx)("p",{className:"apx-caption",children:"Simplified Section 280G: if payments reach three times the base amount, a 20% excise tax applies to everything above one times base, and the company loses its deduction. Income tax, valuation rules, exemptions, gross-up and cutback provisions in your agreement all matter and need a specialist. The dashed line is what you would receive with no excise tax."})]})]})}],710965)},645432,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645),s=e.i(849481),r=e.i(514827),n=e.i(710965);let o=e=>116+92*e;function l(e){return e<=4||e>=12?"dark":"open"}function c(){let e,i,s,r=function(){let[e,a]=(0,t.useState)(!1);return(0,t.useEffect)(()=>{let e=window.matchMedia("(prefers-reduced-motion: reduce)");a(e.matches);let i=()=>a(e.matches);
21370return e.addEventListener("change",i),()=>e.removeEventListener("change",i)},[]),e}(),[n,c]=(0,t.useState)(17),[d,h]=(0,t.useState)(null);(0,t.useEffect)(()=>{if(r||null!==d)return;let e=window.setInterval(()=>c(e=>(e+1)%52),700);return()=>window.clearInterval(e)},[r,d]);let m=d??n,p=Math.floor(m/13),g=[];for(let e=0;e<4;e+=1)for(let i=0;i<4;i+=1)for(let t=0;t<13;t+=1){let s="dark"===l(t+1);g.push((0,a.jsx)("rect",{className:s?"apx-win apx-win--dark":"apx-win",x:200+16*t+2.5,y:o(e)+19*i+3,width:11,height:13,rx:"1"},`${e}-${i}-${t}`))}return(0,a.jsxs)("figure",{className:"apx-tower",children:[(0,a.jsxs)("svg",{viewBox:"0 0 600 540",className:"apx-tower-svg",role:"img","aria-labelledby":"apx-tower-title apx-tower-desc",children:[(0,a.jsx)("title",{id:"apx-tower-title",children:"An illustrative executive year drawn as a glass tower"}),(0,a.jsx)("desc",{id:"apx-tower-desc",children:"Four bands of thirteen weeks. Roughly seven weeks in each quarter are open trading windows; the rest are shaded as a typical blackout. A gold dot marks a quarterly vest date. Illustrative only."}),(0,a.jsxs)("defs",{children:[(0,a.jsxs)("linearGradient",{id:"apx-glass",x1:"0",y1:"0",x2:"1",y2:"1",children:[(0,a.jsx)("stop",{offset:"0",stopColor:"#ffffff",stopOpacity:"0.9"}),(0,a.jsx)("stop",{offset:"1",stopColor:"#c9d0dc",stopOpacity:"0.45"})]}),(0,a.jsxs)("linearGradient",{id:"apx-sweep-grad",x1:"0",y1:"0",x2:"1",y2:"0",children:[(0,a.jsx)("stop",{offset:"0",stopColor:"#ffffff",stopOpacity:"0"}),(0,a.jsx)("stop",{offset:"0.5",stopColor:"#fff6dd",stopOpacity:"0.85"}),(0,a.jsx)("stop",{offset:"1",stopColor:"#ffffff",stopOpacity:"0"})]}),(0,a.jsx)("pattern",{id:"apx-hatch",width:"8",height:"10",patternUnits:"userSpaceOnUse",children:(0,a.jsx)("path",{d:"M0 0H8M0 10H8",stroke:"#2a2f3a",strokeOpacity:"0.1",strokeWidth:"1"})}),(0,a.jsxs)("clipPath",{id:"apx-clip",children:[(0,a.jsx)("rect",{x:"188",y:"100",width:"232",height:"384"}),(0,a.jsx)("rect",{x:"236",y:"64",width:"136",height:"36"}),(0,a.jsx)("rect",{x:"36",y:"356",width:"68",height:"144"}),(0,a.jsx)("rect",{x:"112",y:"262",width:"66",height:"238"}),(0,a.jsx)("rect",{x:"432",y:"300",width:"60",height:"200"}),(0,a.jsx)("rect",{x:"502",y:"396",width:"68",height:"104"})]})]}),[[36,356,68,144],[112,262,66,238],[432,300,60,200],[502,396,68,104]].map(([e,i,t,s])=>(0,a.jsx)("rect",{x:e,y:i,width:t,height:s,className:"apx-bg-tower",fill:"url(#apx-hatch)"},`${e}-${i}`)),(0,a.jsx)("line",{x1:"304",y1:"18",x2:"304",y2:"64",className:"apx-spire"}),(0,a.jsx)("rect",{x:"236",y:"64",width:"136",height:"36",className:"apx-tower-body",fill:"url(#apx-glass)"}),(0,a.jsx)("rect",{x:"188",y:"100",width:"232",height:"384",className:"apx-tower-body",fill:"url(#apx-glass)"}),(0,a.jsx)("rect",{x:"172",y:"484",width:"264",height:"16",className:"apx-plinth"}),(0,a.jsx)("line",{x1:"12",y1:"500",x2:"588",y2:"500",className:"apx-ground"}),[0,1,2,3].map(e=>(0,a.jsxs)("text",{x:"182",y:o(e)+38+4,textAnchor:"end",className:"apx-svg-q",children:["Q",e+1]},e)),(0,a.jsx)("text",{x:200,y:"92",className:"apx-svg-q",children:"wk 1"}),(0,a.jsx)("text",{x:404,y:"92",textAnchor:"end",className:"apx-svg-q",children:"wk 13"}),g,[0,1,2,3].map(e=>{let i=o(e)+38+9;return(0,a.jsxs)("g",{children:[(0,a.jsx)("circle",{cx:368,cy:i,r:"3.6",className:"apx-vest-ring"}),(0,a.jsx)("circle",{cx:368,cy:i,r:"3.6",className:"apx-vest"})]},e)}),(0,a.jsx)("rect",{className:"apx-active",x:200+m%13*16+.5,y:o(p)-1.5,width:15,height:79,rx:"2"}),(0,a.jsx)("g",{clipPath:"url(#apx-clip)",pointerEvents:"none",children:(0,a.jsx)("g",{className:"apx-sweep",children:(0,a.jsx)("rect",{x:"0",y:"0",width:"72",height:"540",fill:"url(#apx-sweep-grad)",transform:"skewX(-18)"})})}),Array.from({length:52},(e,i)=>{let t=Math.floor(i/13),s=i%13;return(0,a.jsx)("rect",{className:"apx-hit",x:200+16*s,y:o(t),width:16,height:76,onPointerEnter:()=>h(i),onPointerLeave:()=>h(null)},i)})]}),(0,a.jsxs)("figcaption",{className:"apx-tower-cap",children:[(0,a.jsx)("p",{className:"apx-tower-live apx-mono","aria-hidden":!0,children:(e=Math.floor(m/13)+1,s="dark"===l(i=m%13+1)?"blackout (illustrative)":"open window",`Q${e} \xb7 week ${i} — ${s}${11===i?", vest date":""}`)}),(0,a.jsxs)("ul",{className:"apx-legend",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"apx-sw apx-sw--open","aria-hidden":!0}),"Open window"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"apx-sw apx-sw--dark","aria-hidden":!0}),"Typical blackout"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"apx-sw apx-sw--vest","aria-hidden":!0}),"Vest date"]})]}),(0,a.jsx)("p",{className:"apx-tower-note",children:"Illustrative. Weeks 12–13 before a quarter ends and weeks 1–4 after it are shaded as a typical blackout. Your company’s insider trading policy sets the real dates."})]})]})}var d=e.i(36831);let h=[{q:"How much of my net worth is riding on one stock?",a:"Concentration feels like conviction until a share-price drop lands on the whole balance sheet. The glide-path model below shows what a drop costs today and at your target.",model:{label:"Try the model",to:"#concentration"},read:{label:"Managing Concentrated Stock Position Risk Without Signaling",slug:"/blog/concentrated-stock-position-risk-management"},topic:d.TOPIC.concentrated},{q:"What is a deferred compensation balance worth if the company stumbles?",a:"It is usually an unsecured promise from your employer. The haircut model prices that risk in, so the balance on paper stops being the number you plan around.",model:{label:"Price the risk",to:"/tools#deferred"},read:{label:"Deferred Compensation Plans: Weighing the Real Tradeoffs",slug:"/blog/deferred-compensation-plan-tradeoffs"},topic:d.TOPIC.deferred},{q:"What could a change in control cost me in tax?",a:"Severance and accelerated equity can cross a line where a 20% excise tax switches on. The cliff model shows where the line sits and what happens either side of it.",model:{label:"See the cliff",to:"/tools#cliff"},read:{label:"Golden Parachute and Severance Tax Planning for Departing Executives",slug:"/blog/golden-parachute-severance-tax-planning"},topic:d.TOPIC.severance}],m=["Equity compensation and vesting optimization","Deferred compensation election strategy","Concentrated stock reduction and diversification","Executive benef
21370its and 10b5-1 planning"];function p({no:e,id:i,title:t,children:s}){return(0,a.jsxs)("header",{className:"apx-sec-head",children:[(0,a.jsx)("p",{className:"apx-secno apx-mono","aria-hidden":!0,children:e}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{id:i,className:"apx-h2",children:t}),s?(0,a.jsx)("p",{className:"apx-sec-lede",children:s}):null]})]})}e.s(["ApexHomePage",0,function({siteBasePath:e="",advisorBlock:o}){let l=a=>(0,d.apexHref)(e,a),[g,v]=(0,t.useState)(""),u=e=>{v(e),(0,d.scrollToAdvisor)()};return(0,a.jsxs)(s.ApexShell,{children:[(0,a.jsx)(s.ApexNav,{siteBasePath:e,currentSlug:"/"}),(0,a.jsxs)("main",{id:"main-content",tabIndex:-1,className:"apx-main",children:[(0,a.jsx)("section",{className:"apx-hero","aria-labelledby":"apx-h1",children:(0,a.jsxs)("div",{className:"apx-container apx-hero-grid",children:[(0,a.jsxs)("div",{className:"apx-hero-copy apx-rise",children:[(0,a.jsx)("p",{className:"apx-eyebrow apx-mono",children:"Executive wealth briefings"}),(0,a.jsxs)("h1",{id:"apx-h1",className:"apx-h1",children:["Wealth decisions that survive ",(0,a.jsx)("em",{children:"board week"})," and ",(0,a.jsx)("em",{children:"earnings week."})]}),(0,a.jsx)("p",{className:"apx-lede",children:"Concentration, liquidity and planning briefings for leaders who already run complex businesses. Plain language, stated assumptions, and models that run in your browser: nothing you type into them leaves it."}),(0,a.jsxs)("p",{className:"apx-flowline",children:["Read the briefing. Run the model. Then get matched with a licensed financial advisor who specializes in"," ",d.SPECIALTY,"."]}),(0,a.jsxs)("div",{className:"apx-cta-row",children:[(0,a.jsx)(i.default,{href:"#advisor",className:"apx-btn apx-btn--solid",children:"Get matched with an advisor"}),(0,a.jsx)(i.default,{href:l("/blog"),className:"apx-btn apx-btn--line",children:"Read the briefings"})]}),(0,a.jsxs)("dl",{className:"apx-facts",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Briefings"}),(0,a.jsx)("dd",{className:"apx-mono",children:"10"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Each takes about"}),(0,a.jsx)("dd",{className:"apx-mono",children:"4 min"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Models"}),(0,a.jsx)("dd",{className:"apx-mono",children:"3"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Advisor match"}),(0,a.jsx)("dd",{className:"apx-mono",children:"4 steps"})]})]})]}),(0,a.jsx)("div",{className:"apx-hero-art",children:(0,a.jsx)(c,{})})]})}),(0,a.jsx)("section",{className:"apx-how","aria-labelledby":"apx-how-h",children:(0,a.jsxs)("div",{className:"apx-container",children:[(0,a.jsx)("h2",{id:"apx-how-h",className:"apx-how-h apx-mono",children:"How it works"}),(0,a.jsxs)("ol",{className:"apx-how-list",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"apx-how-no apx-mono","aria-hidden":!0,children:"01"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"apx-how-t",children:"Read or run a model"}),(0,a.jsx)("p",{children:"Start with a briefing or a model to frame your question."})]})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"apx-how-no apx-mono","aria-hidden":!0,children:"02"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"apx-how-t",children:"Answer a few questions"}),(0,a.jsx)("p",{children:"Four short steps: where you are, your finances (ranges are fine), your goals, how to reach you."})]})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"apx-how-no apx-mono","aria-hidden":!0,children:"03"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"apx-how-t",children:"Get matched and contacted"}),(0,a.jsxs)("p",{children:["We contact you to confirm what you need, then match you with a licensed financial advisor who specializes in ",d.SPECIALTY,"."]})]})]})]})]})}),(0,a.jsx)("section",{id:"advisor",className:"apx-section apx-section--stone","aria-labelledby":"apx-a-h",children:(0,a.jsx)("div",{className:"apx-container",children:(0,a.jsxs)("div",{className:"apx-advisor-grid",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"apx-eyebrow apx-mono",children:"Find an advisor"}),(0,a.jsx)("h2",{id:"apx-a-h",className:"apx-h2",children:"Executive wealth demands executive-grade coordination"}),(0,a.jsxs)("p",{className:"apx-body",children:["Equity compensation, deferred pay, change-in-control terms and board duties all interact. A licensed financial advisor who specializes in ",d.SPECIALTY," can bring them into one plan. Tell us about your situation. We contact you to confirm what you need, then match you with the right person."]}),(0,a.jsx)("p",{className:"apx-help-h apx-mono",children:"Areas advisors help with"}),(0,a.jsx)("ul",{className:"apx-rules",children:m.map(e=>(0,a.jsx)("li",{children:e},e))})]}),(0,a.jsx)(r.ApexForm,{block:o,siteKey:"clevelfinancial.com",siteName:"Apex Wealth Desk",pageSlug:"/",pageTitle:"Apex Wealth Desk",presetTopic:g})]})})}),(0,a.jsx)("section",{className:"apx-section","aria-labelledby":"apx-q
21370-h",children:(0,a.jsxs)("div",{className:"apx-container",children:[(0,a.jsx)(p,{no:"01",id:"apx-q-h",title:"Three questions executives bring to an advisor"}),(0,a.jsx)("ol",{className:"apx-questions",children:h.map((e,t)=>{let s;return(0,a.jsxs)("li",{className:"apx-question",children:[(0,a.jsx)("p",{className:"apx-qno apx-mono","aria-hidden":!0,children:String(t+1).padStart(2,"0")}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"apx-h3",children:e.q}),(0,a.jsx)("p",{className:"apx-body",children:e.a}),(0,a.jsxs)("p",{className:"apx-q-links",children:[(0,a.jsx)("button",{type:"button",className:"apx-link apx-link--btn apx-link--strong",onClick:()=>u(e.topic),children:"Talk to an advisor about this →"}),(0,a.jsx)("span",{"aria-hidden":!0,children:" · "}),(0,a.jsx)(i.default,{href:(s=e.model.to).startsWith("#")?s:l(s),className:"apx-link",children:e.model.label}),(0,a.jsx)("span",{"aria-hidden":!0,children:" · "}),(0,a.jsx)(i.default,{href:l(e.read.slug),className:"apx-link",children:e.read.label})]})]})]},e.q)})})]})}),(0,a.jsx)("section",{id:"concentration",className:"apx-section apx-section--stone","aria-labelledby":"apx-c-h",children:(0,a.jsxs)("div",{className:"apx-container",children:[(0,a.jsx)(p,{no:"02",id:"apx-c-h",title:"The concentration glide path",children:"Reducing a position takes trading windows, and windows are finite. Set today’s share, a target and the number of windows you can use, then stress the share price."}),(0,a.jsx)(n.ConcentrationModel,{}),(0,a.jsxs)("div",{className:"apx-ask",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"apx-ask-t",children:"Want an advisor to pressure-test these numbers?"}),(0,a.jsxs)("p",{className:"apx-ask-b",children:["We match you with a licensed financial advisor who specializes in ",d.SPECIALTY,"."]})]}),(0,a.jsx)("button",{type:"button",className:"apx-btn apx-btn--solid",onClick:()=>u(d.TOPIC.concentrated),children:"Get matched with an advisor"})]}),(0,a.jsx)("p",{className:"apx-more",children:(0,a.jsx)(i.default,{href:l("/tools"),className:"apx-link apx-link--strong",children:"Two more models: deferred compensation and the change-in-control cliff →"})})]})}),(0,a.jsx)("section",{className:"apx-section","aria-labelledby":"apx-b-h",children:(0,a.jsxs)("div",{className:"apx-container",children:[(0,a.jsx)(p,{no:"03",id:"apx-b-h",title:"Briefings, filed by area",children:"Ten briefings across three areas. Each is written to be read in a single sitting."}),(0,a.jsx)("div",{className:"apx-areas",children:d.AREAS.map(e=>(0,a.jsxs)("div",{className:"apx-area",children:[(0,a.jsxs)("div",{className:"apx-area-head",children:[(0,a.jsx)("h3",{className:"apx-h3",children:e.name}),(0,a.jsx)("p",{className:"apx-area-blurb",children:e.blurb})]}),(0,a.jsx)("ul",{className:"apx-brief-list",children:d.BRIEFINGS.filter(a=>a.area===e.id).map(e=>(0,a.jsxs)("li",{className:"apx-brief",children:[(0,a.jsx)(i.default,{href:l(`/blog/${e.slug}`),className:"apx-brief-title",children:e.title}),(0,a.jsx)("p",{className:"apx-brief-ex",children:e.excerpt}),(0,a.jsxs)("p",{className:"apx-brief-meta apx-mono",children:[e.read," min read"]})]},e.slug))})]},e.id))})]})}),(0,a.jsx)("section",{className:"apx-section apx-section--stone","aria-labelledby":"apx-g-h",children:(0,a.jsxs)("div",{className:"apx-container",children:[(0,a.jsx)(p,{no:"04",id:"apx-g-h",title:"How a trade gets cleared",children:"A simplified map of the three positions an insider can be in. Your company’s insider trading policy, and its counsel, decide the details."}),(0,a.jsxs)("div",{className:"apx-tree",role:"group","aria-label":"Three routes when an insider wants to reduce a position",children:[(0,a.jsx)("p",{className:"apx-tree-root",children:"You want to reduce a position."}),(0,a.jsxs)("div",{className:"apx-tree-cards",children:[(0,a.jsxs)("article",{className:"apx-tree-card",children:[(0,a.jsx)("p",{className:"apx-tree-tag apx-mono",children:"Route A"}),(0,a.jsx)("h3",{className:"apx-h4",children:"Open window, with pre-clearance"}),(0,a.jsx)("p",{children:"Trade only while your company’s window is open and the general counsel’s office has cleared it in advance."})]}),(0,a.jsxs)("article",{className:"apx-tree-card",children:[(0,a.jsx)("p",{className:"apx-tree-tag apx-mono",children:"Route B"}),(0,a.jsx)("h3",{className:"apx-h4",children:"Pre-arranged plan (Rule 10b5-1)"}),(0,a.jsx)("p",{children:"A written plan adopted while you are not aware of material nonpublic information, with a cooling-off period before the first trade. When you adopt it matters."})]}),(0,a.jsxs)("article",{className:"apx-tree-card apx-tree-card--stop",children:[(0,a.jsx)("p",{className:"apx-tree-tag apx-mono",children:"Stop"}),(0,a.jsx)("h3",{className:"apx-h4",children:"Aware of material nonpublic information"}),(0,a.jsx)("p",{children:"Do not trade and do not tip. Speak to counsel before anything else."})]})]})]}),(0,a.jsx)("p",{className:"apx-more",children:(0,a.jsx)(i.default,{href:l("/blog/10b5-1-trading-plans-explained"),className:"apx-link apx-link--strong",children:"Read: 10b5-1 Trading Plans Explained: Structure, Timing, and Common Missteps →"})})]})}),(0,a.jsx)("section",{className:"apx-section","aria-labelledby":"apx-m-h",children:(0,a.jsx)("div",{className:"apx-container",children:(0,a.jsxs)("div",{className:"apx-band",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"apx-eyebrow apx-mono",children:"Ready when you are"}),(0,a.jsx)("h2",{id:"apx-m-h",className:"apx-h2",children:"Read the briefing. Run the model. Then talk to someone who does this for a living."}),(0,a.jsxs)("p",{className:"apx-body",children:["A short quiz, a call from us, then a match with a licensed financial advisor who specializes in ",d.SPECIALTY,"."]})]}),(0,a.jsx)("div",{className:"apx-band-cta",children:(0,a.jsx)(i.default,{href:"#advisor",className:"apx-btn apx-btn--solid",children:"Get matched with an advisor"})})]})})})]}),(0,a.jsx)(s.ApexFooter,{siteBasePath:e}),(0,a.jsx)(s.ApexSticky,{siteBasePath:e,currentSlug:"/"})]})}],645432)},314490,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645),s=e.i(618566),r=e.i(600951),n=e.i(525320);let o="financialplannercalifornia.com",l="Golden State Planner",c=(0,n.advisorNiche)(o),d=c.specialty;function h(e){let a=c.topics.find(a=>a.startsWith(e));if(!a)throw Error(`Golden State Planner: no quiz topic starts with "${e}"`);return a}let m={planner:h("Choosing a financial planner"),retirement:h("Retirement planning"),taxes:h("California taxes"),education:h("Saving for education"),insurance:h("Insurance gaps"),home:h("Home and mortgage"),plan:h("A full financial plan")},p=[{slug:"fee-only-vs-commission-based-planners",title:"Fee-Only vs. Commission-Based Financial Planners",pillar:"Choosing an Advisor",topic:m.planner,excerpt:"How your planner gets paid shapes what they recommend. Here is the real difference between fee-only and commission-based compensation, and why it matters more than the label on the business card."},{slug:"fiduciary-duty-explained",title:"Fiduciary Duty Explained: What It Actually Means for Your Planner",pillar:"Choosing an Advisor",topic:m.planner,excerpt:"“Fiduciary” gets used loosely in advertising. Here is what the legal standard actually requires, who it applies to, and the exact question to ask before you hire anyone."},{slug:"cfp-vs-other-certifications",title:"CFP vs. Other Financial Certifications: What Each One Signals",pillar:"Credentials",topic:m.planner,excerpt:"CFP, CFA, ChFC, CPA/PFS: the letters on a planner’s business card each verify something different. Here is what each credential actually requires and what it tells you."},{slug:"questions-to-ask-before-hiring-a-planner",title:"Questions to Ask Before Hiring a Financial Planner",pillar:"Choosing an Advisor",topic:m.planner,excerpt:"A practical checklist of the questions that reveal how a planner is compensated, what they’re actually licensed to do, and whether their typical client looks anything like you."},{slug:"red-flags-advisor-relationships",title:"Red Flags in Financial Advisor Relationships",pillar:"Advisor Relationships",topic:m.planner,excerpt:"Guaranteed returns, rushed paperwork, and vague answers about fees are warning signs, not quirks. Here is how to spot trouble early and verify a planner’s background before you sign anything."},{slug:"robo-advisors-vs-human-planners-california",title:"Robo-Advisors vs. Human Planners for California Residents",pillar:"Choosing an Advisor",topic:m.planner,excerpt:"Algorithmic portfolios are cheap and competent at what they do. The question for most Californians isn’t which is “better”: it’s how much complexity your situation actually has."},{slug:"what-a-financial-plan-contains",title:"What a Real Financial Plan Actually Contains",pillar:"Planning Basics",topic:m.plan,excerpt:"A financial plan is not a pitch deck with a pie chart. Here is what a genuine, written plan should include, and how to tell the real thing from an investment sales presentation."},{slug:"financial-planning-by-life-stage",title:"How Financial Planning Differs by Life Stage: 20s, 30s, 40s and Beyond",pillar:"Life Stages",topic:m.plan,excerpt:"The right financial priorities at 25 are not the right priorities at 45. Here is how planning focus typically shifts as your income, obligations, and time horizon change."},{slug:"coordinating-planner-cpa-estate-attorney",title:"Coordinating a Financial Planner With a CPA and Estate Attorney",pillar:"Coordination",topic:m.plan,excerpt:"Your planner, your CPA, and your estate attorney each own a different leg of your financial life. When they don’t talk to each other, expensive gaps open up. Here is how to close them."},{slug:"financial-planning-cost-benchmarks-california",title:"Cost Benchmarks for Financial Planning Services in California",pillar:"Cost & Fees",topic:m.planner,excerpt:"What does financial planning actually cost? The general, heavily varying ranges for asset-based fees, flat retainers, hourly rates and project plans, and why you should always get a written fee schedule."}],g={"fee-only-vs-commission-based-planners":{label:"Compare an asset-based fee with a flat fee",to:"/tools#fees"},"financial-planning-cost-benchmarks-california":{label:"Compare an asset-based fee with a flat fee",to:"/tools#fees"},"financial-planning-by-life-stage":{label:"Open the California life-stage roadmap",to:"/tools#roadmap"},"what-a-financial-plan-contains":{label:"Work out your Social Security claiming ages",to:"/tools#social-security"}};function v(e,a){let i=e&&"/"!==e?e.replace(/\/$/,""):"";return"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}let u=[{slug:"/tools",label:"Roadmap & tools"},{slug:"/blog",label:"Guides"},{slug:"/services",label:"What we cover"},{slug:"/about",label:"About"}],b=(0,t.createContext)({topic:"",nonce:0,ask:()=>void 0,base:""}),f=()=>(0,t.useContext)(b);function x({base:e,children:i}){let r=(0,s.useRouter)(),[n,o]=(0,t.useState)({topic:"",nonce:0}),l=(0,t.useCallback)(a=>{o(e=>({topic:a,nonce:e.nonce+1})),!function(){let e=document.getElementById("advisor");if(!e)return!1;let a=window.matchMedia("(prefers-reduced-motion: reduce)").matches;return e.scrollIntoView({behavior:a?"auto":"smooth",block:"start"}),!0}()&&r.push(`${v(e,"/contact")}?topic=${encodeURIComponent(a)}#advisor`)},[e,r]),c=(0,t.useMemo)(()=>({...n,ask:l,base:e}),[n,l,e]);return(0,a.jsx)(b.Provider,{value:c,children:i})}function y({topic:e,className:i,children:t}){let{ask:s}=f();return(0,a.jsx)("a",{href:"#advisor",className:i,onClick:a=>{a.preventDefault(),s(e)},children:t})}function w({size:e=34}){return(0,a.jsxs)("svg",{width:e,height:e,viewBox:"0 0 34 34","aria-hidden":"true",className:"gsp-mark",children:[(0,a.jsx)("rect",{x:"0.5",y:"0.5",width:"33",height:"33",rx:"3",fill:"var(--gsp-teal)"}
21370),(0,a.jsx)("path",{d:"M6 22 H28",stroke:"var(--gsp-paper)",strokeWidth:"2",strokeLinecap:"round"}),(0,a.jsx)("circle",{cx:"9",cy:"22",r:"2.6",fill:"var(--gsp-paper)"}),(0,a.jsx)("circle",{cx:"17",cy:"22",r:"2.6",fill:"var(--gsp-paper)"}),(0,a.jsx)("path",{d:"M25 12.5 29 22h-8z",fill:"var(--gsp-ochre)"})]})}function _(){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/planner/fonts/aleo.woff2"}),(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/planner/fonts/source-sans-3.woff2"})]})}function k({base:e,currentSlug:t}){let{open:s,toggle:n}=(0,r.useMobileMenu)(),o="/"===t?"#advisor":v(e,"/contact"),l=e=>t===e||"/blog"===e&&t.startsWith("/blog/")?"page":void 0;return(0,a.jsxs)("header",{className:"gsp-header",children:[(0,a.jsxs)("div",{className:"gsp-header-in",children:[(0,a.jsxs)(i.default,{href:v(e,"/"),className:"gsp-brand",children:[(0,a.jsx)(w,{}),(0,a.jsxs)("span",{className:"gsp-brand-name",children:["Golden State ",(0,a.jsx)("span",{children:"Planner"})]})]}),(0,a.jsx)("nav",{className:"gsp-nav","aria-label":"Main",children:u.map(t=>(0,a.jsx)(i.default,{href:v(e,t.slug),className:"gsp-nav-link","aria-current":l(t.slug),children:t.label},t.slug))}),(0,a.jsxs)("div",{className:"gsp-header-end",children:[(0,a.jsx)(i.default,{href:o,className:"gsp-btn gsp-btn--ink gsp-btn--sm",children:"Find an advisor"}),(0,a.jsxs)("button",{type:"button",className:"gsp-menu-btn","aria-expanded":s,"aria-controls":"gsp-phone-menu",onClick:n,children:[(0,a.jsx)("span",{className:"gsp-menu-icon","aria-hidden":"true","data-open":s?"1":"0"}),s?"Close":"Menu"]})]})]}),(0,a.jsx)("nav",{id:"gsp-phone-menu",className:"gsp-phone-menu","aria-label":"Menu",hidden:!s,children:(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/"),className:"gsp-phone-link","aria-current":l("/"),children:"Home"})}),u.map(t=>(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,t.slug),className:"gsp-phone-link","aria-current":l(t.slug),children:t.label})},t.slug)),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/contact"),className:"gsp-phone-link","aria-current":l("/contact"),children:"Contact"})})]})})]})}function j({base:e}){return(0,a.jsx)("footer",{className:"gsp-footer",children:(0,a.jsxs)("div",{className:"gsp-footer-in",children:[(0,a.jsxs)("div",{className:"gsp-footer-lead",children:[(0,a.jsxs)("p",{className:"gsp-footer-brand",children:[(0,a.jsx)(w,{size:28})," ",l]}),(0,a.jsx)("p",{children:"Guides and tools for Californians planning their money, and a way to be matched with a licensed financial advisor who specializes in California residents."}),(0,a.jsx)(i.default,{href:v(e,"/contact"),className:"gsp-btn gsp-btn--ochre gsp-btn--sm",children:"Find an advisor"})]}),(0,a.jsxs)("nav",{className:"gsp-footer-nav","aria-label":"Footer",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"gsp-footer-h",children:"Plan"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/tools"),children:"Roadmap & tools"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/blog"),children:"Guides"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/services"),children:"What we cover"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/about"),children:"About"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/contact"),children:"Contact"})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"gsp-footer-h",children:"Policies"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/privacy"),children:"Privacy"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/terms"),children:"Terms"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/disclaimer"),children:"Disclaimer"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/do-not-sell"),children:"Do not sell or share my information"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/editorial-policy"),children:"Editorial policy"})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"gsp-footer-h",children:"Adv
21370isors"}),(0,a.jsx)("ul",{children:(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/advisors"),children:"For advisors"})})})]})]}),(0,a.jsxs)("p",{className:"gsp-footer-note",children:[l," publishes general education. It does not give personalized investment, tax or legal advice, recommend securities or manage money, and asking to be matched does not create an advisory relationship. Licensed financial advisors may pay us for introductions. Ages and rules on the roadmap are summaries of public rules; confirm the current version with the agency or a professional before you act."]})]})})}function N({base:e,currentSlug:t}){let s="/"===t?"#advisor":v(e,"/contact");return(0,a.jsxs)("div",{className:"gsp-phonebar",children:[(0,a.jsx)("p",{children:"Matched with a licensed advisor for Californians"}),(0,a.jsx)(i.default,{href:s,className:"gsp-btn gsp-btn--ochre gsp-btn--sm",children:"Find an advisor"})]})}function S({siteBasePath:e,currentSlug:i,children:t}){let s=e??"";return(0,a.jsxs)("div",{className:"gsp-root shell-gsp",children:[(0,a.jsx)(_,{}),(0,a.jsx)("a",{className:"gsp-skip",href:"#main-content",children:"Skip to main content"}),(0,a.jsxs)(x,{base:s,children:[(0,a.jsx)(k,{base:s,currentSlug:i}),(0,a.jsx)("main",{id:"main-content",tabIndex:-1,className:"gsp-main",children:t}),(0,a.jsx)(j,{base:s}),(0,a.jsx)(N,{base:s,currentSlug:i})]})]})}var A=e.i(247167),z=e.i(3303);let C=A.default.env.NEXT_PUBLIC_TURNSTILE_SITE_KEY;function M({block:e,siteKey:i,siteName:s,pageSlug:r,pageTitle:n,variant:o="client"}){let l=e.steps??[{title:e.title}],c=l.length,[h,m]=(0,t.useState)(1),[p,g]=(0,t.useState)(""),[v,u]=(0,t.useState)(!1),[b,x]=(0,t.useState)({kind:"idle"}),y=(0,t.useRef)(null),w=(0,t.useRef)(null),_=(0,t.useRef)(null),{topic:k,nonce:j}=f(),N=e.fields.find(e=>"help_topic"===e.name),S=N?.options??[];(0,t.useEffect)(()=>{k&&"advisor"!==o&&S.includes(k)&&(g(k),m(1))},[k,j]),(0,t.useEffect)(()=>{if("advisor"===o)return;let e=new URLSearchParams(window.location.search).get("topic");e&&S.includes(e)&&g(e)},[]);let A=(0,t.useRef)(!1),P=()=>{A.current=!0};(0,t.useEffect)(()=>{A.current&&(A.current=!1,w.current?.focus())},[h]);let T=()=>{(function(e){let a=y.current;if(!a)return!0;for(let i of Array.from(a.querySelectorAll(`[data-step="${e}"] input, [data-step="${e}"] select, [data-step="${e}"] textarea`)))if(!i.reportValidity())return!1;return!0})(h)&&(m(e=>Math.min(e+1,c)),P())};async function E(a){if(a.preventDefault(),h<c)return void T();let t=a.currentTarget,o=new FormData(t),l=String(o.get("company_website")??"").trim(),d=String(o.get("cf-turnstile-response")??"").trim(),p={};for(let[e,a]of o.entries())"company_website"!==e&&"cf-turnstile-response"!==e&&"string"==typeof a&&(p[e]=a.trim());u(!0);try{let a=await fetch("/api/leads",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({siteKey:i,siteName:s,pageSlug:r,pageTitle:n,sourceUrl:window.location.href,honeypot:l,turnstileToken:d,fields:p})}),o=await a.json().catch(()=>null);if(!a.ok)throw Error(o?.message??"We could not send your request just now. Please try again.");t.reset(),g(""),m(1),x({kind:"success",message:e.successMessage??"Thank you. We have your request."}),window.setTimeout(()=>_.current?.focus(),0)}catch(e){x({kind:"error",message:e instanceof Error?e.message:"We could not send your request just now. Please try again."})}finally{u(!1)}}if("success"===b.kind)return(0,a.jsxs)("div",{ref:_,tabIndex:-1,className:"gsp-quiz gsp-quiz--done",role:"status",children:[(0,a.jsx)("p",{className:"gsp-kicker",children:"advisor"===o?"Application received":"Request received"}),(0,a.jsx)("h3",{className:"gsp-h3",children:"Thank you."}),(0,a.jsx)("p",{children:b.message}),"advisor"===o?null:(0,a.jsxs)("ol",{className:"gsp-done-steps",children:[(0,a.jsx)("li",{children:"We review your answers."}),(0,a.jsx)("li",{children:"We contact you to confirm what you need."}),(0,a.jsxs)("li",{children:["We match you with a licensed financial advisor who specializes in ",d,"."]})]})]});let F=e=>{let i=`gsp-f-${e.name}`,t=e.required??!1;if("hidden"===e.type)return(0,a.jsx)("input",{type:"hidden",name:e.name,value:e.value??""},e.name);if("checkbox"===e.type)return(0,a.jsxs)("label",{className:"gsp-check",children:[(0,a.jsx)("input",{type:"checkbox",name:e.name,value:"yes",required:t}),(0,a.jsx)("span",{children:e.label})]},e.name);let s=!t&&!e.label.toLowerCase().includes("optional"),r=(0,a.jsxs)("label",{htmlFor:i,className:"gsp-label",children:[e.label,s?(0,a.jsx)("span",{className:"gsp-optional",children:" (optional)"}):null]});if("select"===e.type){let s="help_topic"===e.name;return(0,a.jsxs)("div",{className:"gsp-field",children:[r,(0,a.jsxs)("select",{id:i,name:e.name,required:t,className:"gsp-input gsp-select",...s?{value:p,onChange:e=>g(e.target.value)}:{defaultValue:""},children:[(0,a.jsx)("option",{value:"",disabled:!0,children:"Choose one"}),(e.options??[]).map(e=>(0,a.jsx)("option",{value:e,children:e},e))]})]},e.name)}if("textarea"===e.type)return(0,a.jsxs)("div",{className:"gsp-field",children:[r,(0,a.jsx)("textarea",{id:i,name:e.name,required:t,rows:4,className:"gsp-input"})]},e.name);let n="email"===e.name?"email":"phone"===e.name?"tel":"full_name"===e.name?"name":"location"===e.name?"postal-code":"off";return(0,a.jsxs)("div",{className:"gsp-field",children:[r,(0,a.jsx)("input",{id:i,name:e.name,type:e.type,required:t,className:"gsp-input",autoComplete:n})]},e.name)};return(0,a.jsxs)("form",{ref:y,className:"gsp-quiz",onSubmit:E,"aria-label":"advisor"===o?"Advisor application":"Advisor match request",children:[(0,a.jsxs)("div",{className:"gsp-quiz-route",children:[(0,a.jsxs)("p",{className:"gsp-quiz-count",children:["Step ",h," of ",c]}),(0,a.jsx)("ol",{className:"gsp-quiz-stops","aria-hidden":"true",children:l.map((e,i)=>(0,a.jsx)("li",{className:i+1<h?"is-done":i+1===h?"is-here":""},e.title))})]}),l.map((i,t)=>(0,a.jsxs)("fieldset",{"data-step":t+1,hidden:h!==t+1,className:"gsp-quiz-step",children:[(0,a.jsx)("legend",{className:"gsp-visually-hidden",children:i.title}
21370),(0,a.jsx)("h3",{ref:h===t+1?w:void 0,tabIndex:-1,className:"gsp-quiz-h",children:i.title}),i.description?(0,a.jsx)("p",{className:"gsp-quiz-d",children:i.description}):null,e.fields.filter(e=>(e.step??1)===t+1).map(F)]},i.title)),(0,a.jsxs)("label",{className:"gsp-hp","aria-hidden":"true",children:[(0,a.jsx)("span",{children:"Leave this blank"}),(0,a.jsx)("input",{autoComplete:"off",name:"company_website",tabIndex:-1,type:"text"})]}),C?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.default,{src:"https://challenges.cloudflare.com/turnstile/v0/api.js",strategy:"afterInteractive",async:!0,defer:!0}),(0,a.jsx)("div",{className:"cf-turnstile","data-sitekey":C,"data-theme":"light"})]}):null,(0,a.jsxs)("div",{className:"gsp-quiz-nav",children:[h>1?(0,a.jsx)("button",{type:"button",className:"gsp-btn gsp-btn--line",onClick:()=>{m(e=>Math.max(1,e-1)),P()},children:"Back"}):null,h<c?(0,a.jsx)("button",{type:"button",className:"gsp-btn gsp-btn--ink",onClick:T,children:"Next step"}):(0,a.jsx)("button",{type:"submit",className:"gsp-btn gsp-btn--ink",disabled:v,children:v?"Sending…":e.submitLabel??"Get matched with an advisor"})]}),(0,a.jsx)("div",{className:`gsp-status${"error"===b.kind?" gsp-status--error":""}`,role:"error"===b.kind?"alert":"status",children:"error"===b.kind?b.message:""})]})}function P({id:e,label:i,title:t,titleId:s,intro:r,tone:n,children:o,className:l}){return(0,a.jsx)("section",{id:e,className:`gsp-leg${n?` gsp-leg--${n}`:""}${l?` ${l}`:""}`,"aria-labelledby":t?s:void 0,"aria-label":t?void 0:i,children:(0,a.jsxs)("div",{className:"gsp-leg-in",children:[(0,a.jsxs)("div",{className:"gsp-leg-rail",children:[i?(0,a.jsx)("p",{className:"gsp-kicker",children:i}):null,t?(0,a.jsx)("h2",{id:s,className:"gsp-h2",children:t}):null,r?(0,a.jsx)("div",{className:"gsp-leg-intro",children:r}):null]}),(0,a.jsx)("div",{className:"gsp-leg-main",children:o})]})})}function T({block:e,siteKey:i,siteName:t,pageSlug:s,pageTitle:r,title:n,body:o,aside:l}){return e.fields.some(e=>"crd_number"===e.name)?(0,a.jsxs)(P,{id:"apply",label:e.eyebrow,title:e.title,titleId:"gsp-apply-h",intro:(0,a.jsx)("p",{children:e.body}),tone:"sheet",children:[(0,a.jsx)(M,{variant:"advisor",block:e,siteKey:i,siteName:t,pageSlug:s,pageTitle:r}),e.disclosure?(0,a.jsx)("p",{className:"gsp-disclosure",children:e.disclosure}):null]}):(0,a.jsx)(P,{id:"advisor",label:"Find an advisor",title:n??e.title,titleId:"gsp-advisor-h",tone:"sheet",className:"gsp-leg--advisor",intro:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{children:o??e.body}),l,l?null:(0,a.jsxs)("ol",{className:"gsp-steps-mini",children:[(0,a.jsx)("li",{children:"Answer a few questions. Ranges are fine for money."}),(0,a.jsx)("li",{children:"We review your answers and contact you to confirm what you need."}),(0,a.jsxs)("li",{children:["We match you with a licensed financial advisor who specializes in ",d,"."]})]}),e.disclosure?(0,a.jsx)("p",{className:"gsp-disclosure",children:e.disclosure}):null]}),children:(0,a.jsx)(M,{block:e,siteKey:i,siteName:t,pageSlug:s,pageTitle:r})})}function E({block:e,base:s,ctx:r}){let n=e=>/^https?:|^#/.test(e)?e:v(s,e),o=`gsp-b${(0,t.useId)().replace(/:/g,"")}`;switch(e.type){case"story":return(0,a.jsxs)(P,{label:e.eyebrow,title:e.title,titleId:o,children:[(0,a.jsx)("p",{className:"gsp-body",children:e.body}),e.highlights?.length?(0,a.jsx)("ul",{className:"gsp-ticks",children:e.highlights.map(e=>(0,a.jsx)("li",{children:e},e))}):null]});case"services":return(0,a.jsx)(P,{label:e.eyebrow,title:e.title,titleId:o,intro:(0,a.jsx)("p",{children:e.body}),children:(0,a.jsx)("ul",{className:"gsp-stations",children:e.items.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"gsp-h4",children:e.href?(0,a.jsx)(i.default,{href:n(e.href),children:e.title}):e.title}),(0,a.jsx)("p",{children:e.description})]},e.title))})});case"split-panel":return(0,a.jsx)(P,{label:e.eyebrow,title:e.title,titleId:o,intro:e.body?(0,a.jsx)("p",{children:e.body}):null,children:(0,a.jsx)("ol",{className:"gsp-stations gsp-stations--numbered",children:e.panels.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"gsp-h4",children:e.heading}),(0,a.jsx)("p",{children:e.body})]},e.heading))})});case"team":return(0,a.jsx)(P,{label:e.eyebrow,title:e.title,titleId:o,children:(0,a.jsx)("ul",{className:"gsp-stations",children:e.people.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"gsp-h4",children:e.name}),(0,a.jsx)("p",{className:"gsp-role",children:e.role}),(0,a.jsx)("p",{children:e.bio})]},e.name))})});case"faq":return(0,a.jsx)(P,{label:e.eyebrow,title:e.title,titleId:o,children:(0,a.jsx)("div",{className:"gsp-faq",children:e.items.map(e=>(0,a.jsxs)("details",{children:[(0,a.jsx)("summary",{children:e.question}),(0,a.jsx)("p",{children:e.answer})]},e.question))})});case"cta-band":return(0,a.jsxs)(P,{label:e.eyebrow,title:e.title,titleId:o,children:[(0,a.jsx)("p",{className:"gsp-body",children:e.body}),(0,a.jsxs)("p",{className:"gsp-actions",children:[(0,a.jsx)(i.default,{href:n(e.primaryCta.href),className:"gsp-btn gsp-btn--ink",children:e.primaryCta.label}),e.secondaryCta?(0,a.jsx)(i.default,{href:n(e.secondaryCta.href),className:"gsp-btn gsp-btn--line",children:e.secondaryCta.label}):null]})]});case"html-content":return(0,a.jsx)(P,{label:"Details",children:(0,a.jsx)("div",{className:"gsp-prose",dangerouslySetInnerHTML:{__html:e.html}})});case"lead-form":return(0,a.jsx)(T,{block:e,...r});case"blog-feed":return(0,a.jsx)(P,{label:e.eyebrow,title:e.title,titleId:o,children:(0,a.jsx)("ul",{className:"gsp-stations",children:e.posts.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"gsp-h4",children:(0,a.jsx)(i.default,{href:n(e.href.replace(/^https?:\/\/[^/]+/,"")),children:e.title})}),(0,a.jsx)("p",{children:e.excerpt})]},e.href))})});case"finance-calculator":return null;default:if(!e.title&&!e.body)return null;return(0,a.jsx)(P,{label:e.eyebrow,title:e.title,titleId:o,children:e.body?(0,a.jsx)("p",{className:"gsp-body",children:e.body}):null})}}let F=[{id:"savings",name:"Retirement accounts",short:"Accounts"},{id:"california",name:"California rules",short:"California"},{id:"social",name:"Social Security",short:"Social Security"},{id:"health",name:"Health cover",short:"Health"}],L=[{from:25,to:35,name:"Foundations"},{from:35,to:50,name:"Building"}
21370,{from:50,to:65,name:"The approach"},{from:65,to:80,name:"Drawing income"},{from:80,to:95,name:"Legacy"}];function I(e){return e<=1937?780:e<=1942?780+(e-1937)*2:e<=1954?792:e<=1959?792+(e-1954)*2:804}let $=[{id:"dependent-26",track:"health",age:26,title:"Cover on a parent’s health plan ends",note:"A parent’s plan can keep you on as a dependent until you turn 26. Losing that cover opens a special enrollment period, so you can buy a plan through Covered California or join an employer plan without waiting for open enrollment.",kind:"law",source:"HealthCare.gov",topic:m.insurance},{id:"catch-up-50",track:"savings",age:50,title:"Catch-up contributions open",note:"From the year you turn 50 you can put more into a 401(k), 403(b), most 457(b) plans and IRAs than the standard limit. The IRS resets the dollar amounts most years, and some plans allow a higher catch-up at 60 to 63, so check the current limits before you set your payroll percentage.",kind:"check",source:"IRS",topic:m.retirement},{id:"rule-of-55",track:"savings",age:55,title:"Leaving a job at 55 or later",note:"If you leave an employer in or after the year you turn 55, withdrawals from that employer’s 401(k) or 403(b) are free of the 10% early-withdrawal tax. It does not apply to IRAs or to plans from earlier jobs, and each plan sets its own withdrawal options.",kind:"check",source:"IRS",topic:m.retirement},{id:"prop-19",track:"california",age:55,title:"Carry your property-tax base to a new home",note:"Proposition 19 lets a California homeowner who is 55 or older sell their main home and move its taxable value to a replacement main home anywhere in the state, up to three times. A pricier replacement adds part of the difference to the value. Timing and filing rules apply: check the current rule with your county assessor.",kind:"check",source:"California State Board of Equalization",topic:m.home},{id:"age-59-half",track:"savings",age:59.5,title:"The early-withdrawal tax ends",note:"After 59½ the 10% additional tax on early withdrawals from IRAs and workplace plans no longer applies. Withdrawals from pre-tax accounts are still ordinary income. Roth earnings also need the account to be at least five years old to come out tax-free.",kind:"law",source:"IRS",topic:m.retirement},{id:"ss-62",track:"social",age:62,title:"Earliest Social Security retirement benefit",note:"You can start at 62, but the check is permanently smaller. With a full retirement age of 67, starting at 62 pays 70% of your full amount for life. A spouse’s survivor benefit can also be affected by when you start.",kind:"law",source:"Social Security Administration",topic:m.retirement},{id:"ca-ss-untaxed",track:"california",age:62,title:"California does not tax Social Security",note:"Whenever you start, California leaves Social Security benefits out of state taxable income. Part of them can still be taxed on your federal return, depending on your other income. Pensions and withdrawals from retirement accounts are taxed by California.",kind:"law",source:"California Franchise Tax Board",topic:m.taxes},{id:"medicare-65",track:"health",age:65,title:"Medicare eligibility",note:"Most people become eligible at 65. The first enrollment window runs seven months: the three months before your birthday month, that month, and the three after. Signing up late for Part B can mean a lasting penalty unless you have qualifying cover from current work. In California, HICAP gives free, unbiased Medicare counselling.",kind:"law",source:"Medicare.gov; California Department of Aging",topic:m.insurance},{id:"ss-fra",track:"social",age:67,ageFor:e=>I(e)/12,title:"Full retirement age",note:"The age at which Social Security pays 100% of your benefit. It is 67 for anyone born in 1960 or later, and between 66 and 67 for people born from 1955 to 1959. Earning a paycheck before this age can hold back some benefits; from this age it does not.",kind:"law",source:"Social Security Administration",topic:m.retirement},{id:"ss-70",track:"social",age:70,title:"Delayed credits stop",note:"Each year you wait past full retirement age adds 8% to your benefit, until 70. With a full retirement age of 67, starting at 70 pays 124% of your full amount. Waiting beyond 70 adds nothing.",kind:"law",source:"Social Security Administration",topic:m.retirement},{id:"qcd",track:"savings",age:70.5,labelUp:!0,title:"Give straight from an IRA",note:"From 70½ you can send money from an IRA directly to a charity as a qualified charitable distribution. It is left out of your federal taxable income and can count toward a required withdrawal. There is a yearly cap, adjusted for inflation: check the current rule, and ask a tax professional how the gift is treated on your California return.",kind:"check",source:"IRS",topic:m.taxes},{id:"rmd",track:"savings",age:73,ageFor:function(e){return e>=1960?75:73},title:"Required withdrawals begin",note:"Traditional IRAs and most workplace plans must start paying out a yearly minimum. The starting age is 73 if you were born from 1951 to 1959 and 75 if you were born in 1960 or later. The first one can wait until April 1 of the next year, which puts two in one tax year. Roth IRAs have no required withdrawals for the owner.",kind:"law",source:"IRS",topic:m.retirement},{id:"horizon",track:"savings",age:95,title:"A common planning horizon",note:"Many planners test a plan to 95 or later so that the money outlasts you, not the other way round. This is a rule of thumb, not a rule: your health and family history may call for a longer or shorter horizon.",kind:"check",source:"Planning convention, not a law",topic:m.plan}];function B(e,a){return a&&e.ageFor?e.ageFor(a):e.age}function q(e){let a=Math.floor(e+1e-9),i=Math.round((e-a)*12);return 0===i?String(a):6===i?`${a}\xbd`:`${a} and ${i} mo`}function R(e,a){if(e<a){let i=a-e;return 1-5/9/100*Math.min(i,36)-5/12/100*Math.max(0,i-36)}return 1+2/3/100*(Math.min(e,840)-a)}let H=e=>`${((e-25)/70*100).toFixed(3)}%`,D=Array.from({length:15},(e,a)=>25+5*a),W=e=>F.find(a=>a.id===e)?.name??e;function O({track:e,size:i=16,hollow:t=!1}
21370){let s={fill:t?"var(--gsp-paper)":`var(--gsp-trk-${e})`,stroke:`var(--gsp-trk-${e})`,strokeWidth:2.2};return(0,a.jsxs)("svg",{width:i,height:i,viewBox:"0 0 16 16","aria-hidden":"true",className:"gsp-shape",children:["savings"===e?(0,a.jsx)("circle",{cx:"8",cy:"8",r:"5.8",...s}):null,"california"===e?(0,a.jsx)("path",{d:"M8 1.6 14.4 8 8 14.4 1.6 8z",...s}):null,"social"===e?(0,a.jsx)("rect",{x:"2.3",y:"2.3",width:"11.4",height:"11.4",rx:"1",...s}):null,"health"===e?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("circle",{cx:"8",cy:"8",r:"5.8",...s,fill:"var(--gsp-paper)"}),(0,a.jsx)("path",{d:"M8 5v6M5 8h6",stroke:`var(--gsp-trk-${e})`,strokeWidth:"2"})]}):null]})}function Y({m:e,birthYear:i,headingLevel:t,id:s}){let r,n,o,l=B(e,i);return(0,a.jsxs)("div",{id:s,className:"gsp-note","data-track":e.track,children:[(0,a.jsxs)("p",{className:"gsp-note-meta",children:[(0,a.jsx)(O,{track:e.track,size:14})," ",W(e.track)," ",(0,a.jsx)("span",{"aria-hidden":"true",children:"·"})," age"," ",(0,a.jsx)("strong",{children:q(l)}),i?(0,a.jsxs)(a.Fragment,{children:[" ",(0,a.jsx)("span",{"aria-hidden":"true",children:"·"})," for you, in ",(r=Math.floor(l),n=Math.round((l-r)*12),o=i+r,n?`${o} or ${o+1}`:String(o))]}):null]}),(0,a.jsx)(2===t?"h2":"h3",{className:"gsp-note-h",children:e.title}),(0,a.jsx)("p",{className:"gsp-note-body",children:e.note}),(0,a.jsxs)("div",{className:"gsp-note-foot",children:[(0,a.jsx)("p",{className:`gsp-tag gsp-tag--${e.kind}`,children:"law"===e.kind?"Fixed age in current rules":"Check the current rule"}),(0,a.jsxs)("p",{className:"gsp-note-src",children:["Source: ",e.source]})]}),(0,a.jsxs)(y,{topic:e.topic,className:"gsp-arrow-link",children:["Talk to an advisor about this ",(0,a.jsx)("span",{"aria-hidden":"true",children:"→"})]})]})}function V({headingLevel:e=2,rail:i,children:s,initial:r="age-59-half"}){let[n,o]=(0,t.useState)(r),[l,c]=(0,t.useState)(""),[d,h]=(0,t.useState)(null);(0,t.useEffect)(()=>h(new Date().getFullYear()),[]);let m=/^\d{4}$/.test(l.trim())?Number(l.trim()):NaN,p=m>=1951&&m<=2001,g=p?m:void 0,v=g&&d?d-g:void 0,u=l.trim().length>=4&&!p?"Enter a year from 1951 to 2001.":"",b=(0,t.useMemo)(()=>[...$].sort((e,a)=>B(e,g)-B(a,g)),[g]),f=void 0!==v?b.filter(e=>B(e,g)>v).slice(0,3):[],x=$.find(e=>e.id===n)??$[0],y=e=>void 0!==v&&B(e,g)<=v;return(0,a.jsxs)("div",{className:"gsp-atlas",children:[(0,a.jsxs)("div",{className:"gsp-rail",children:[i,(0,a.jsxs)("div",{className:"gsp-rail-card",children:[(0,a.jsxs)("label",{htmlFor:"gsp-birth",className:"gsp-rail-label",children:["Your birth year ",(0,a.jsx)("span",{className:"gsp-optional",children:"(optional)"})]}),(0,a.jsx)("input",{id:"gsp-birth",className:"gsp-input gsp-input--year",inputMode:"numeric",autoComplete:"bday-year",maxLength:4,placeholder:"e.g. 1972",value:l,onChange:e=>c(e.target.value.replace(/[^\d]/g,"")),"aria-describedby":"gsp-birth-help","aria-invalid":!!u||void 0}),(0,a.jsx)("p",{id:"gsp-birth-help",className:`gsp-rail-help${u?" is-error":""}`,"aria-live":"polite",children:u||(g&&void 0!==v?`You turn ${v} in ${d}. Your full retirement age and required-withdrawal age are placed on the map.`:"Places you on the line and moves the ages that depend on when you were born. Stays in this page; nothing is sent.")}),f.length?(0,a.jsxs)("div",{className:"gsp-next",children:[(0,a.jsx)("p",{className:"gsp-rail-label",children:"Next on your route"}),(0,a.jsx)("ol",{children:f.map(e=>{let i=B(e,g);return(0,a.jsx)("li",{children:(0,a.jsxs)("button",{type:"button",className:"gsp-next-btn",onClick:()=>o(e.id),"aria-controls":"gsp-note",children:[(0,a.jsx)("span",{className:"gsp-next-age",children:q(i)}),(0,a.jsxs)("span",{className:"gsp-next-t",children:[e.title,(0,a.jsxs)("span",{className:"gsp-next-y",children:["in ",Math.max(0,Math.ceil(i-(v??0)))," yr",1===Math.ceil(i-(v??0))?"":"s"]})]})]})},e.id)})})]}):null]})]}),(0,a.jsxs)("div",{className:"gsp-atlas-main",children:[s,(0,a.jsxs)("div",{className:"gsp-map",role:"group","aria-label":"Roadmap of money rules by age, 25 to 95",children:[(0,a.jsxs)("div",{className:"gsp-map-plot-layer","aria-hidden":"true",children:[L.map((e,i)=>(0,a.jsx)("div",{className:`gsp-season${i%2?" is-alt":""}`,style:{left:H(e.from),width:`calc(${H(e.to)} - ${H(e.from)})`},children:(0,a.jsx)("span",{children:e.name})},e.name)),void 0!==v&&v>=25&&v<=95?(0,a.jsx)("div",{className:"gsp-you",style:{left:H(v)},children:(0,a.jsxs)("span",{children:["You, ",v]})}):null]}),F.map((e,i)=>(0,a.jsxs)("div",{className:"gsp-map-row","data-track":e.id,style:{"--row":i},children:[(0,a.jsxs)("p",{className:"gsp-map-track",children:[(0,a.jsx)(O,{track:e.id,size:14}),e.name]}),(0,a.jsx)("div",{className:"gsp-map-line",children:$.filter(a=>a.track===e.id).map(e=>{let i=B(e,g),t=e.id===x.id;return(0,a.jsxs)("button",{type:"button",className:`gsp-stop${t?" is-on":""}${y(e)?" is-past":""}${e.labelUp?" is-up":""}`,style:{left:H(i)},"aria-expanded":t,"aria-controls":"gsp-note","aria-label":`Age ${q(B(e,g))}
21370: ${e.title}${y(e)?" (already passed for you)":""}`,onClick:()=>o(e.id),children:[(0,a.jsx)(O,{track:e.track,size:t?20:16,hollow:y(e)}),(0,a.jsx)("span",{className:"gsp-stop-age","aria-hidden":"true",children:q(i).replace(" and ","·").replace(" mo","m")})]},e.id)})})]},e.id)),(0,a.jsxs)("div",{className:"gsp-map-axis","aria-hidden":"true",children:[(0,a.jsx)("span",{className:"gsp-map-axis-label",children:"Age"}),(0,a.jsx)("div",{className:"gsp-map-ticks",children:D.map(e=>(0,a.jsx)("span",{className:e%10==5?"is-major":"",style:{left:H(e)},children:e%10==5?e:""},e))})]})]}),(0,a.jsx)("div",{className:"gsp-map-note","aria-live":"polite",children:(0,a.jsx)(Y,{m:x,birthYear:g,headingLevel:e,id:"gsp-note"})}),(0,a.jsx)("ol",{className:"gsp-route","aria-label":"Money rules by age, 25 to 95",children:b.map(i=>{let t=i.id===n,s=B(i,g);return(0,a.jsxs)("li",{className:`gsp-route-stop${t?" is-on":""}${y(i)?" is-past":""}`,"data-track":i.track,children:[(0,a.jsxs)("button",{type:"button",className:"gsp-route-btn","aria-expanded":t,"aria-controls":`gsp-note-m-${i.id}`,onClick:()=>o(t?"":i.id),children:[(0,a.jsx)("span",{className:"gsp-route-age",children:q(s).replace(" and ","·").replace(" mo","m")}),(0,a.jsx)(O,{track:i.track,size:16,hollow:y(i)}),(0,a.jsxs)("span",{className:"gsp-route-t",children:[i.title,(0,a.jsx)("span",{className:"gsp-route-trk",children:W(i.track)})]})]}),t?(0,a.jsx)(Y,{m:i,birthYear:g,headingLevel:e,id:`gsp-note-m-${i.id}`}):null]},i.id)})})]})]})}let G=[{track:"social",title:"Social Security is not taxed by the state",body:"California leaves Social Security benefits out of state income. Part can still be taxed federally.",source:"California Franchise Tax Board",topic:m.taxes},{track:"health",title:"Health savings accounts get no state break",body:"California does not follow the federal treatment of HSAs. Contributions and account earnings are taxable on your California return.",source:"California Franchise Tax Board",topic:m.taxes},{track:"savings",title:"No state deduction for 529 contributions",body:"Money you put into a 529 college plan, including California’s own ScholarShare 529, is not deductible on your state return. Ask how K–12 and loan-repayment withdrawals are treated: California does not follow every federal change.",source:"California Franchise Tax Board",topic:m.education},{track:"california",title:"Your property-tax base follows the purchase",body:"Under Proposition 13 a home’s assessed value rises by at most 2% a year until it changes hands or is newly built on. At 55 or older, Proposition 19 lets you move that base to a replacement home.",source:"California State Board of Equalization",topic:m.home}],K=[{to:"/tools#roadmap",title:"The life-stage roadmap",body:"Every age on the line above, full size, with your birth year applied.",glyph:"route"},{to:"/tools#social-security",title:"Social Security starting ages",body:"Your monthly amount at 62, at full retirement age and at 70, and the age each choice pulls ahead.",glyph:"curve"},{to:"/tools#fees",title:"Asset-based fee or flat fee",body:"What a percentage fee and a flat yearly fee cost on your balance over the years you choose.",glyph:"bars"}];function U({kind:e}){return(0,a.jsxs)("svg",{width:"72",height:"40",viewBox:"0 0 72 40","aria-hidden":"true",className:"gsp-glyph",children:["route"===e?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{d:"M4 26H68",stroke:"var(--gsp-trk-savings)",strokeWidth:"2"}),(0,a.jsx)("path",{d:"M4 14H68",stroke:"var(--gsp-trk-social)",strokeWidth:"2"}),(0,a.jsx)("circle",{cx:"18",cy:"26",r:"4",fill:"var(--gsp-trk-savings)"}),(0,a.jsx)("circle",{cx:"44",cy:"26",r:"4",fill:"var(--gsp-trk-savings)"}),(0,a.jsx)("rect",{x:"36",y:"10",width:"8",height:"8",fill:"var(--gsp-trk-social)"}),(0,a.jsx)("rect",{x:"54",y:"10",width:"8",height:"8",fill:"var(--gsp-trk-social)"})]}):null,"curve"===e?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{d:"M4 34H68",stroke:"var(--gsp-line-strong)",strokeWidth:"1"}),(0,a.jsx)("path",{d:"M6 30 L66 14",stroke:"var(--gsp-trk-savings)",strokeWidth:"2",fill:"none"}),(0,a.jsx)("path",{d:"M26 34 L66 6",stroke:"var(--gsp-trk-social)",strokeWidth:"2",fill:"none"})]}):null,"bars"===e?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{d:"M4 34H68",stroke:"var(--gsp-line-strong)",strokeWidth:"1"}),(0,a.jsx)("path",{d:"M6 26 C30 22 50 14 66 6",stroke:"var(--gsp-trk-savings)",strokeWidth:"2",fill:"none"}),(0,a.jsx)("path",{d:"M6 20 H66",stroke:"var(--gsp-trk-california)",strokeWidth:"2"})]}):null]})}function J({series:e,xMin:i,xMax:s,xTicks:r,xFmt:n,yFmt:o,label:l,xTitle:c}){let d=464,h=246,m=Math.max(1,...e.flatMap(e=>e.points.map(e=>e[1]))),p=function(e,a=4){let i=e/a,t=10**Math.floor(Math.log10(i||1)),s=i/t;return(s<=1?1:s<=2?2:s<=2.5?2.5:s<=5?5:10)*t}(m),g=Math.ceil(m/p)*p,v=e=>58+(e-i)/(s-i)*d,u=e=>14+h-e/g*h,[b,f]=(0,t.useState)(null),x=(0,t.useId)().replace(/:/g,""),y=e.map(e=>({s:e,y:u(e.points[e.points.length-1]?.[1]??0)})).sort((e,a)=>e.y-a.y);for(let e=1;e<y.length;e++)y[e].y-y[e-1].y<16&&(y[e].y=y[e-1].y+16);let w=(e,a)=>{let i=e.points;if(a<=i[0][0])return i[0][1];for(let e=1;e<i.length;e++)if(a<=i[e][0]){let[t,s]=i[e-1],[r,n]=i[e];return s+(n-s)*(a-t)/(r-t||1)}return i[i.length-1][1]};function _(e){let a=e.currentTarget.getBoundingClientRect(),t=i+(e.clientX-a.left)/a.width*(s-i);f(Math.max(i,Math.min(s,Math.round(t))))}let k=Array.from({length:Math.round(g/p)+1},(e,a)=>a*p),j=null!==b&&v(b)>58+.6*d;return(0,a.jsxs)("figure",{className:"gsp-chart",children:[(0,a.jsxs)("svg",{viewBox:"0 0 640 300",role:"img","aria-label":l,className:"gsp-chart-svg",children:[(0,a.jsx)("defs",{children:(0,a.jsx)("clipPath",{id:`c${x}`,children:(0,a.jsx)("rect",{x:58,y:12,width:d,height:h+4})})}),k.map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:58,x2:58+d,y1:u(e),y2:u(e),className:0===e?"gsp-ch
21370art-base":"gsp-chart-grid"}),(0,a.jsx)("text",{x:50,y:u(e)+4,textAnchor:"end",className:"gsp-chart-tick",children:o(e)})]},e)),r.map(e=>(0,a.jsx)("text",{x:v(e),y:14+h+20,textAnchor:"middle",className:"gsp-chart-tick",children:n(e)},e)),(0,a.jsx)("text",{x:58+d/2,y:296,textAnchor:"middle",className:"gsp-chart-axis-t",children:c}),(0,a.jsx)("g",{clipPath:`url(#c${x})`,children:e.map(e=>(0,a.jsx)("polyline",{fill:"none",stroke:`var(--gsp-trk-${e.track})`,strokeWidth:"2",strokeLinejoin:"round",strokeLinecap:"round",points:e.points.map(([e,a])=>`${v(e).toFixed(1)},${u(a).toFixed(1)}`).join(" ")},e.name))}),y.map(({s:e,y:i})=>(0,a.jsxs)("g",{children:[(0,a.jsx)("circle",{cx:v(s),cy:u(e.points[e.points.length-1][1]),r:"4",fill:`var(--gsp-trk-${e.track})`,stroke:"var(--gsp-sheet)",strokeWidth:"2"}),(0,a.jsx)("text",{x:v(s)+10,y:i+4,className:"gsp-chart-end",children:e.name})]},e.name)),null!==b?(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:v(b),x2:v(b),y1:14,y2:14+h,className:"gsp-chart-cross"}),e.map(e=>(0,a.jsx)("circle",{cx:v(b),cy:u(w(e,b)),r:"4.5",fill:`var(--gsp-trk-${e.track})`,stroke:"var(--gsp-sheet)",strokeWidth:"2"},e.name))]}):null,(0,a.jsx)("rect",{x:58,y:14,width:d,height:h,fill:"transparent",onPointerMove:_,onPointerDown:_,onPointerLeave:()=>f(null)})]}),null!==b?(0,a.jsxs)("div",{className:`gsp-tip${j?" is-left":""}`,style:{left:`${v(b)/640*100}%`},"aria-hidden":"true",children:[(0,a.jsxs)("p",{className:"gsp-tip-h",children:[c," ",n(b)]}),e.map(e=>(0,a.jsxs)("p",{children:[(0,a.jsx)("i",{style:{background:`var(--gsp-trk-${e.track})`}})," ",e.name," ",(0,a.jsx)("b",{children:o(w(e,b))})]},e.name))]}):null]})}let X=e=>`$${Math.round(e).toLocaleString("en-US")}`,Z=e=>e>=1e6?`$${(e/1e6).toFixed(e>=1e7?0:1).replace(/\.0$/,"")}M`:e>=1e3?`$${Math.round(e/1e3)}k`:`$${Math.round(e)}`,Q=e=>Number(e.replace(/[^\d.]/g,""));function ee({id:e,label:i,value:t,onChange:s,prefix:r,suffix:n,help:o}){return(0,a.jsxs)("div",{className:"gsp-field gsp-field--num",children:[(0,a.jsx)("label",{htmlFor:e,className:"gsp-label",children:i}),(0,a.jsxs)("div",{className:"gsp-affix",children:[r?(0,a.jsx)("span",{"aria-hidden":"true",children:r}):null,(0,a.jsx)("input",{id:e,className:"gsp-input",inputMode:"decimal",value:t,onChange:e=>s(e.target.value.replace(/[^\d.,]/g,"")),"aria-describedby":o?`${e}-h`:void 0}),n?(0,a.jsx)("span",{"aria-hidden":"true",children:n}):null]}),o?(0,a.jsx)("p",{id:`${e}-h`,className:"gsp-help",children:o}):null]})}function ea(){let[e,i]=(0,t.useState)("1966"),[s,r]=(0,t.useState)("2,400"),n=Number(e),o=/^\d{4}$/.test(e)&&n>=1951&&n<=2001,l=I(o?n:1960),[c,d]=(0,t.useState)(null),h=c??l,p=Math.max(0,Q(s))||0,g=p*R(744,l),v=p*R(h,l),u=p*R(840,l),b=(e,a,i)=>Math.max(0,12*i-e)*a,f=(e,a,i,t)=>t<=a||i<=e?null:(t*i-a*e)/(t-a)/12,x=f(744,g,h,v),w=f(h,v,840,u),_=Array.from({length:34},(e,a)=>62+a),k=(e,a)=>_.map(i=>[i,b(e,a,i)]),j=q(h/12),N=[{name:"Start at 62",track:"savings",points:k(744,g)},{name:`Start at ${j}`,track:"california",points:k(h,v)},{name:"Start at 70",track:"social",points:k(840,u)}],S=[["62",744,g],[`${q(l/12)} (full)`,l,p*R(l,l)],["70",840,u]];return(0,a.jsxs)("div",{className:"gsp-tool",children:[(0,a.jsxs)("div",{className:"gsp-tool-in",children:[(0,a.jsxs)("div",{className:"gsp-tool-inputs",children:[(0,a.jsx)(ee,{id:"gsp-ss-year",label:"Birth year",value:e,onChange:e=>i(e.replace(/[^\d]/g,"").slice(0,4)),help:o?`Full retirement age: ${q(l/12)}.`:"Enter a year from 1951 to 2001. Until then, 67 is used."}),(0,a.jsx)(ee,{id:"gsp-ss-pia",label:"Monthly benefit at full retirement age",prefix:"$",value:s,onChange:r,help:"Your estimate is on your statement at ssa.gov/myaccount. The figure shown is an example."}),(0,a.jsxs)("div",{className:"gsp-field",children:[(0,a.jsxs)("label",{htmlFor:"gsp-ss-claim",className:"gsp-label",children:["Age you start: ",(0,a.jsx)("strong",{children:j})]}),(0,a.jsx)("input",{id:"gsp-ss-claim",type:"range",className:"gsp-range",min:744,max:840,step:1,value:h,onChange:e=>d(Number(e.target.value)),"aria-valuetext":`${j}, ${Math.round(1e3*R(h,l))/10}% of the full amount`}),(0,a.jsxs)("div",{className:"gsp-range-scale","aria-hidden":"true",children:[(0,a.jsx)("span",{children:"62"}),(0,a.jsx)("span",{children:"66"}),(0,a.jsx)("span",{children:"70"})]})]})]}),(0,a.jsxs)("div",{className:"gsp-tool-out","aria-live":"polite",children:[(0,a.jsxs)("p",{className:"gsp-readout",children:[(0,a.jsx)("span",{className:"gsp-readout-n",children:X(v)}),(0,a.jsxs)("span",{className:"gsp-readout-l",children:["a month from ",j,", ",(100*R(h,l)).toFixed(1),"% of your full amount"]})]}),(0,a.jsxs)("ul",{className:"gsp-facts",children:[(0,a.jsx)("li",{children:x?(0,a.jsxs)(a.Fragment,{children:["Starting at ",j," instead of 62 pulls ahead in total received at about age ",(0,a.jsx)("b",{children:x.toFixed(1)}),"."]}):(0,a.jsx)(a.Fragment,{children:"Starting at 62 is your chosen age, so there is nothing to compare against 62."})}),(0,a.jsx)("li",{children:w?(0,a.jsxs)(a.Fragment,{children:["Waiting from ",j," to 70 pulls ahead at about age ",(0,a.jsx)("b",{children:w.toFixed(1)}),"."]}):(0,a.jsx)(a.Fragment,{children:"You chose 70, the latest age that still adds credits."})}),(0,a.jsx)("li",{children:"California does not tax Social Security benefits, at any starting age."})]})]})]}),(0,a.jsx)(J,{series:N,xMin:62,xMax:95,xTicks:[62,65,70,75,80,85,90,95],xFmt:e=>`${e}`,yFmt:Z,xTitle:"Your age",label:`Total benefits received by age, starting at 62, at ${j} and at 70, in today's dollars.`}),(0,a.jsx)("div",{className:"gsp-table-wrap",tabIndex:0,role:"region","aria-label":"Benefit table",children:(0,a.jsxs)("table",{className:"gsp-table",children:[(0,a.jsx)("caption",{children:"Monthly benefit and total received, in today’s dollars"}),(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"col",children:"Start at"}),(0,a.jsx)("th",{scope:"col",children:"Share of full"}),(0,a.jsx)("th",{scope:"col",children:"Monthly"}),(0,a.jsx)("th",{scope:"col",children:"Total by 80"}),(0,a.jsx)("th",{scope:"col",children:"Total by 90"})]})}),(0,a.jsx)("tbody",{children:S.map(([e,i,t])=>(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"row",children:e}),(0,a.jsxs)("td",{children:[(100*R(i,l)).toFixed(1),"%"]}),(0,a.jsx)("td",{children:X(t)}),(0,a.jsx)("td",{children:X(b(i,t,80))}),(0,a.jsx)("td",{children:X(b(i,t,90))})]},e))})]})}),(0,a.jsx)("p",{className:"gsp-illustration",children:"Illustration. Uses the Social Security Administration’s early-claiming reduction and delayed-credit rules. Leaves out cost-of-living increases, taxes, Medicare premiums, the earnings test and spousal or survivor benef
21370its, which can change the best age for a couple."}),(0,a.jsx)("p",{className:"gsp-tool-ask",children:(0,a.jsxs)(y,{topic:m.retirement,className:"gsp-arrow-link",children:["Talk to an advisor about when to start ",(0,a.jsx)("span",{"aria-hidden":"true",children:"→"})]})})]})}function ei(){let[e,i]=(0,t.useState)("750,000"),[s,r]=(0,t.useState)("1"),[n,o]=(0,t.useState)("6,000"),[l,c]=(0,t.useState)("5"),[d,h]=(0,t.useState)("20"),p=Q(e)||0,g=Math.min(5,Q(s)||0)/100,v=Q(n)||0,u=Math.min(15,Q(l)||0)/100,b=Math.max(1,Math.min(40,Math.round(Q(d)||1))),f=p,x=p,w=0,_=0,k=[],j=[];for(let e=1;e<=b;e++){let a=(f*=1+u)*g;f-=a,w+=a;let i=Math.min(v,Math.max(0,x*=1+u));x-=i,_+=i,k.push([e,a]),j.push([e,i])}let N=g>0?v/g:0;return(0,a.jsxs)("div",{className:"gsp-tool",children:[(0,a.jsxs)("div",{className:"gsp-tool-in",children:[(0,a.jsxs)("div",{className:"gsp-tool-inputs gsp-tool-inputs--grid",children:[(0,a.jsx)(ee,{id:"gsp-fee-start",label:"Portfolio today",prefix:"$",value:e,onChange:i}),(0,a.jsx)(ee,{id:"gsp-fee-rate",label:"Asset-based fee a year",suffix:"%",value:s,onChange:r}),(0,a.jsx)(ee,{id:"gsp-fee-flat",label:"Flat fee a year",prefix:"$",value:n,onChange:o}),(0,a.jsx)(ee,{id:"gsp-fee-growth",label:"Growth before fees",suffix:"% a year",value:l,onChange:c}),(0,a.jsx)(ee,{id:"gsp-fee-years",label:"Years",value:d,onChange:h})]}),(0,a.jsxs)("div",{className:"gsp-tool-out","aria-live":"polite",children:[(0,a.jsxs)("p",{className:"gsp-readout",children:[(0,a.jsx)("span",{className:"gsp-readout-n",children:X(Math.abs(w-_))}),(0,a.jsxs)("span",{className:"gsp-readout-l",children:[w>=_?"more":"less"," paid in fees over ",b," years with the asset-based fee"]})]}),(0,a.jsxs)("ul",{className:"gsp-facts",children:[(0,a.jsxs)("li",{children:["Asset-based fee: ",(0,a.jsx)("b",{children:X(w)})," in total, ending balance ",(0,a.jsx)("b",{children:X(f)}),"."]}),(0,a.jsxs)("li",{children:["Flat fee: ",(0,a.jsx)("b",{children:X(_)})," in total, ending balance ",(0,a.jsx)("b",{children:X(x)}),"."]}),N>0?(0,a.jsxs)("li",{children:["The percentage fee costs more than the flat fee whenever the portfolio is above ",(0,a.jsx)("b",{children:X(N)}),"."]}):null]})]})]}),(0,a.jsx)(J,{series:[{name:`${(100*g).toFixed(2).replace(/0$/,"")}% of assets`,track:"savings",points:k},{name:"Flat fee",track:"california",points:j}],xMin:1,xMax:b,xTicks:Array.from({length:b},(e,a)=>a+1).filter(e=>1===e||e%5==0),xFmt:e=>`${e}`,yFmt:Z,xTitle:"Year",label:"Fee paid each year under an asset-based fee and a flat fee, from the figures entered."}),(0,a.jsx)("p",{className:"gsp-illustration",children:"Illustration built only from the figures you enter. The example numbers are not quotes, market rates or benchmarks. The flat fee is held level here; many rise over time. Ask every planner for a written fee schedule."}),(0,a.jsx)("p",{className:"gsp-tool-ask",children:(0,a.jsxs)(y,{topic:m.planner,className:"gsp-arrow-link",children:["Talk to an advisor about fees ",(0,a.jsx)("span",{"aria-hidden":"true",children:"→"})]})})]})}function et({trail:e,title:i,lede:t,children:s}){return(0,a.jsx)("header",{className:"gsp-head",children:(0,a.jsxs)("div",{className:"gsp-head-in",children:[(0,a.jsx)("div",{className:"gsp-head-rail",children:e}),(0,a.jsxs)("div",{className:"gsp-head-main",children:[(0,a.jsx)("h1",{className:"gsp-h1 gsp-h1--page",children:i}),t?(0,a.jsx)("p",{className:"gsp-lede",children:t}):null,s]})]})})}function es({base:e,items:t}){return(0,a.jsx)("nav",{"aria-label":"Breadcrumb",className:"gsp-trail",children:(0,a.jsxs)("ol",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/"),children:"Home"})}),t.map(t=>(0,a.jsx)("li",{children:t.to?(0,a.jsx)(i.default,{href:v(e,t.to),children:t.label}):(0,a.jsx)("span",{"aria-current":"page",children:t.label})},t.label))]})})}function er({page:e,base:t,ctx:s}){let r=e.blocks,n=r.find(e=>"hero"===e.type),o=r.find(e=>"html-content"===e.type),l=r.find(e=>"faq"===e.type),c=r.find(e=>"lead-form"===e.type),h=e.slug.replace(/^\/blog\//,""),u=p.find(e=>e.slug===h),b=p.findIndex(e=>e.slug===h),f=u?.topic??m.planner,x=g[h],w=0,_=[],k=o.html.replace(/<h2>([\s\S]*?)<\/h2>/g,(e,a)=>{w+=1;let i=`part-${w}`;return _.push({id:i,text:a.replace(/<[^>]+>/g,"").trim()}),`<h2 id="${i}">${a}</h2>`}),j=Math.max(1,Math.round(o.html.replace(/<[^>]+>
21370/g," ").split(/\s+/).filter(Boolean).length/230)),N=p.filter(e=>e.slug!==h).sort((e,a)=>Number(a.pillar===u?.pillar)-Number(e.pillar===u?.pillar)).slice(0,3);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(et,{trail:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(es,{base:t,items:[{label:"Guides",to:"/blog"},{label:n?.eyebrow??u?.pillar??"Guide"}]}),b>=0?(0,a.jsx)("div",{className:"gsp-guide-axis","aria-hidden":"true",children:p.map((e,i)=>(0,a.jsx)("span",{className:i===b?"is-here":i<b?"is-past":""},e.slug))}):null,(0,a.jsxs)("p",{className:"gsp-head-meta",children:[b>=0?(0,a.jsxs)(a.Fragment,{children:["Guide ",b+1," of ",p.length," · "]}):null,j," min read"]})]}),title:e.title,lede:n?.body??e.summary,children:(0,a.jsxs)("p",{className:"gsp-head-actions",children:[(0,a.jsx)(y,{topic:f,className:"gsp-btn gsp-btn--ink gsp-btn--sm",children:"Talk to an advisor about this"}),x?(0,a.jsx)(i.default,{href:v(t,x.to),className:"gsp-inline-link",children:x.label}):null]})}),(0,a.jsx)("section",{className:"gsp-leg gsp-leg--read","aria-label":"Guide",children:(0,a.jsxs)("div",{className:"gsp-leg-in",children:[(0,a.jsxs)("nav",{className:"gsp-leg-rail gsp-toc","aria-label":"In this guide",children:[(0,a.jsx)("p",{className:"gsp-kicker",children:"In this guide"}),(0,a.jsx)("ol",{children:_.map(e=>(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:`#${e.id}`,children:e.text})},e.id))})]}),(0,a.jsxs)("div",{className:"gsp-leg-main",children:[(0,a.jsx)("div",{className:"gsp-prose",dangerouslySetInnerHTML:{__html:k}}),(0,a.jsxs)("div",{className:"gsp-askband",children:[(0,a.jsx)("p",{className:"gsp-askband-t",children:"Reading gets you the questions. An advisor helps with the answers."}),(0,a.jsxs)("p",{children:["We review your answers, contact you to confirm what you need, then match you with a licensed financial advisor who specializes in ",d,"."]}),(0,a.jsx)(y,{topic:f,className:"gsp-btn gsp-btn--ink",children:"Get matched with an advisor"})]})]})]})}),(0,a.jsx)(P,{label:"Keep reading",title:"Next guides",titleId:"gsp-next-h",children:(0,a.jsx)("ul",{className:"gsp-stations",children:N.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("p",{className:"gsp-index-pillar",children:e.pillar}),(0,a.jsx)("h3",{className:"gsp-h4",children:(0,a.jsx)(i.default,{href:v(t,`/blog/${e.slug}`),children:e.title})})]},e.slug))})}),l?(0,a.jsx)(E,{block:l,base:t,ctx:s}):null,c?(0,a.jsx)(T,{block:c,...s}):null]})}function en({base:e}){let t=Array.from(new Set(p.map(e=>e.pillar)));return(0,a.jsx)(P,{label:`${p.length} guides`,title:"The planner-shopping shelf",titleId:"gsp-shelf-h",intro:(0,a.jsx)("p",{children:"Grouped by the question each one answers."}),children:(0,a.jsx)("div",{className:"gsp-shelf",children:t.map(t=>(0,a.jsxs)("div",{className:"gsp-shelf-group",children:[(0,a.jsx)("h3",{className:"gsp-shelf-h",children:t}),(0,a.jsx)("ol",{className:"gsp-index",children:p.filter(e=>e.pillar===t).map(t=>(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"gsp-index-n","aria-hidden":"true",children:String(p.indexOf(t)+1).padStart(2,"0")}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"gsp-h4",children:(0,a.jsx)(i.default,{href:v(e,`/blog/${t.slug}`),children:t.title})}),(0,a.jsx)("p",{children:t.excerpt})]})]},t.slug))})]},t))})})}function eo(){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("section",{id:"roadmap",className:"gsp-leg gsp-leg--atlas","aria-labelledby":"gsp-rm-h",children:(0,a.jsx)(V,{headingLevel:3,rail:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"gsp-kicker",children:"Tool 1 of 3"}),(0,a.jsx)("h2",{id:"gsp-rm-h",className:"gsp-h2",children:"The California life-stage roadmap"}),(0,a.jsx)("p",{className:"gsp-rail-p",children:"Each marker is a rule that switches on at a set age. Add your birth year to place yourself on the line."})]})})}),(0,a.jsx)(P,{id:"social-security",label:"Tool 2 of 3",title:"Social Security starting ages",titleId:"gsp-ss-h",intro:(0,a.jsx)("p",{children:"What starting at 62, at your full retirement age or at 70 does to the monthly check, and the age at which waiting pays off in total."}),tone:"sheet",children:(0,a.jsx)(ea,{})}),(0,a.jsx)(P,{id:"fees",label:"Tool 3 of 3",title:"Asset-based fee or flat fee",titleId:"gsp-fee-h",intro:(0,a.jsx)("p",{children:"Put in the quotes you have. See what each costs over time, and the balance above which a percentage fee costs more."}),children:(0,a.jsx)(ei,{})})]})}let el={"/tools":"Roadmap & tools","/blog":"Guides","/services":"What we cover","/about":"About","/contact":"Contact","/advisors":"For advisors"};e.s([],129911),e.i(129911),e.s(["ContentPage",0,function({page:e,siteBasePath:i,siteKey:t,siteName:s,after:r}){let n,o=i??"",l=e.blocks,c={siteKey:t,siteName:s,pageSlug:e.slug,pageTitle:e.title},d=e.slug.startsWith("/blog/")&&l.some(e=>"html-content"===e.type),h=l.find(e=>"hero"===e.type),m=l.filter(e=>e!==h);if(d)n=(0,a.jsx)(er,{page:e,base:o,ctx:c});else{let i=el[e.slug]??h?.eyebrow??e.title,t=null;"/tools"===e.slug&&(m=m.filter(e=>"services"!==e.type&&"finance-calculator"!==e.type),t=(0,a.jsx)(eo,{})),"/blog"===e.slug&&(m=m.filter(e=>"blog-feed"!==e.type),t=(0,a.jsx)(en,{base:o}
21370));let s="/contact"===e.slug,r=s?m.find(e=>"story"===e.type):void 0,l=s?m.find(e=>"lead-form"===e.type):void 0;s&&r&&l&&(m=m.filter(e=>e!==r&&e!==l));let d="/tools"===e.slug?"Roadmap and tools":h?.title??e.title,p="/tools"===e.slug?"Three tools that run in your browser: the ages that change your money in California, when to start Social Security, and what a planner’s fee costs over time.":h?.body??e.summary;n=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(et,{trail:(0,a.jsx)(es,{base:o,items:[{label:i}]}),title:d,lede:p}),t,s&&l?(0,a.jsx)(T,{block:l,...c,title:r?.title??l.title,body:r?.body??l.body,aside:r?.highlights?.length?(0,a.jsx)("ul",{className:"gsp-ticks",children:r.highlights.map(e=>(0,a.jsx)("li",{children:e},e))}):null}):null,m.map((e,i)=>(0,a.jsx)(E,{block:e,base:o,ctx:c},`${e.type}-${i}`))]})}return(0,a.jsxs)(S,{siteBasePath:o,currentSlug:e.slug,children:[n,r?(0,a.jsx)("div",{className:"gsp-after",children:r}):null]})},"HomePage",0,function({siteBasePath:e,advisorBlock:t}){let s=e??"",r=p.slice(0,6);return(0,a.jsxs)(S,{siteBasePath:s,currentSlug:"/",children:[(0,a.jsx)("section",{className:"gsp-hero","aria-labelledby":"gsp-h1",children:(0,a.jsx)(V,{headingLevel:2,rail:(0,a.jsxs)("div",{className:"gsp-hero-rail",children:[(0,a.jsx)("p",{className:"gsp-kicker",children:"California · ages 25 to 95"}),(0,a.jsx)("p",{className:"gsp-hero-rail-p",children:"Guides and tools for Californians planning their money, and a licensed financial advisor who specializes in California residents when you want one."}),(0,a.jsx)("p",{className:"gsp-actions",children:(0,a.jsx)("a",{href:"#advisor",className:"gsp-btn gsp-btn--ink",children:"Get matched with an advisor"})}),(0,a.jsx)("p",{className:"gsp-hero-rail-small",children:(0,a.jsx)("a",{href:"#how",className:"gsp-inline-link",children:"How matching works"})})]}),children:(0,a.jsxs)("div",{className:"gsp-hero-head",children:[(0,a.jsx)("h1",{id:"gsp-h1",className:"gsp-h1",children:"The ages that change your money in California, on one line."}),(0,a.jsx)("p",{className:"gsp-lede",children:"Social Security, Medicare, retirement accounts and a few rules only California has all switch on at set ages. Pick a marker to read what changes and why it matters."})]})})}),(0,a.jsx)(P,{id:"how",label:"How it works",title:"Three stops to a matched advisor",titleId:"gsp-how-h",children:(0,a.jsxs)("ol",{className:"gsp-howline",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"gsp-howline-n","aria-hidden":"true",children:"1"}),(0,a.jsx)("h3",{className:"gsp-h4",children:"Answer a few questions"}),(0,a.jsx)("p",{children:"Where you live, what you need help with, and ranges for your money. Four short steps."})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"gsp-howline-n","aria-hidden":"true",children:"2"}),(0,a.jsx)("h3",{className:"gsp-h4",children:"We review and contact you"}),(0,a.jsx)("p",{children:"We review your answers and contact you to confirm what you need."})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"gsp-howline-n","aria-hidden":"true",children:"3"}),(0,a.jsx)("h3",{className:"gsp-h4",children:"We match you with an advisor"}),(0,a.jsxs)("p",{children:["We match you with a licensed financial advisor who specializes in ",d,". You decide what happens next."]})]})]})}),(0,a.jsx)(P,{id:"california",label:"California differences",title:"Where the state parts ways with federal rules",titleId:"gsp-ca-h",intro:(0,a.jsx)("p",{children:"Four rules that change a plan the moment you live here."}),tone:"deep",children:(0,a.jsx)("ul",{className:"gsp-diffs",children:G.map(e=>(0,a.jsxs)("li",{"data-track":e.track,children:[(0,a.jsx)(O,{track:e.track,size:18}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"gsp-h4",children:e.title}),(0,a.jsx)("p",{children:e.body}),(0,a.jsxs)("p",{className:"gsp-diff-foot",children:[(0,a.jsxs)("span",{children:["Source: ",e.source]}),(0,a.jsxs)(y,{topic:e.topic,className:"gsp-arrow-link",children:["Talk to an advisor about this ",(0,a.jsx)("span",{"aria-hidden":"true",children:"→"})]})]})]})]},e.title))})}
21370),(0,a.jsx)(P,{id:"tools",label:"Tools",title:"Run your own numbers",titleId:"gsp-tools-h",intro:(0,a.jsx)("p",{children:"They run in your browser. Nothing you type is sent."}),children:(0,a.jsx)("ul",{className:"gsp-toolrow",children:K.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)(U,{kind:e.glyph}),(0,a.jsx)("h3",{className:"gsp-h4",children:(0,a.jsx)(i.default,{href:v(s,e.to),className:"gsp-card-link",children:e.title})}),(0,a.jsx)("p",{children:e.body})]},e.to))})}),(0,a.jsx)(P,{id:"guides",label:"Guides",title:"Before you hire a planner",titleId:"gsp-guides-h",intro:(0,a.jsxs)("p",{children:["How planners are paid, what their letters mean and what a written plan should hold."," ",(0,a.jsxs)(i.default,{href:v(s,"/blog"),className:"gsp-inline-link",children:["All ",p.length," guides"]})]}),children:(0,a.jsx)("ol",{className:"gsp-index",children:r.map((e,t)=>(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"gsp-index-n","aria-hidden":"true",children:String(t+1).padStart(2,"0")}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"gsp-index-pillar",children:e.pillar}),(0,a.jsx)("h3",{className:"gsp-h4",children:(0,a.jsx)(i.default,{href:v(s,`/blog/${e.slug}`),children:e.title})}),(0,a.jsx)("p",{children:e.excerpt})]})]},e.slug))})}),(0,a.jsx)(T,{block:t,siteKey:o,siteName:l,pageSlug:"/",pageTitle:l}),(0,a.jsx)("section",{className:"gsp-close","aria-labelledby":"gsp-close-h",children:(0,a.jsxs)("div",{className:"gsp-close-in",children:[(0,a.jsx)("h2",{id:"gsp-close-h",className:"gsp-h2",children:"Most of these ages come once. Plan them with someone who knows California."}),(0,a.jsx)("a",{href:"#advisor",className:"gsp-btn gsp-btn--ochre",children:"Find an advisor"})]})})]})}],314490)},983333,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645),s=e.i(600951),r=e.i(525320);let n="lawyerfinancialadvisor.com",o="Axiom Wealth",l=(0,r.advisorNiche)(n).specialty,c=[{slug:"law-school-debt-repayment-strategies",title:"Law Sc
21370hool Debt Repayment: Mapping IBR, PAYE, and PSLF Against Standard Repayment",pillar:"Debt",read:4,excerpt:"Public-interest attorneys and private-practice associates face genuinely different optimal debt strategies. Here is how the repayment math actually diverges."},{slug:"partner-track-cash-flow-planning",title:"Partner-Track Cash Flow: Living With K-1 Income and Quarterly Estimated Taxes",pillar:"Practice economics",read:4,excerpt:"Moving from a W-2 associate paycheck to K-1 partnership income changes your entire cash-flow rhythm. Most new partners underbudget for the first two tax years."},{slug:"biglaw-bonus-tax-timing",title:"Biglaw Bonus Structure and Tax-Timing Planning",pillar:"Career arc",read:4,excerpt:"Year-end and spring bonuses at large firms follow a predictable structure — and predictable structures create planning opportunities most associates never use."},{slug:"associate-to-partner-compensation-transition",title:"Planning the Financial Transition From Associate to Partner Compensation",pillar:"Career arc",read:4,excerpt:"The jump from salary-plus-bonus to a partnership share is not just a raise — it restructures how, and when, you get paid. Plan the transition year deliberately."},{slug:"malpractice-disability-insurance-solo-practitioners",title:"Malpractice and Disability Insurance for Solo and Small-Firm Practitioners",pillar:"Risk",read:4,excerpt:"Without a firm benefits department behind you, malpractice and disability coverage become personal decisions with real financial stakes. Here is how to evaluate them."},{slug:"law-firm-retirement-plan-structures",title:"Comparing Law Firm Retirement Plan Structures: 401(k), Profit-Sharing, and Cash-Balance Plans",pillar:"Retirement",read:4,excerpt:"Firms structure retirement benefits very differently depending on size and partnership model. Knowing which structure you have changes how you should plan around it."},{slug:"equity-partner-buy-in-buy-out-planning",title:"Buy-In and Buy-Out Planning for Equity Partners",pillar:"Practice economics",read:4,excerpt:"Equity partnership comes with a capital obligation on the way in and a payout structure on the way out. Both deserve more planning than most partners give them."},{slug:"in-house-counsel-vs-law-firm-compensation",title:"In-House Counsel vs. Law Firm Compensation: A Financial Planning Comparison",pillar:"Career arc",read:4,excerpt:"In-house offers usually trade top-line cash for equity, stability, and hours. Comparing them requires more than a base-salary spreadsheet."},{slug:"trust-account-vs-personal-account-discipline",title:"Trust Account Discipline: Why the Line Between Client Funds and Personal Finances Cannot Blur",pillar:"Risk",read:4,excerpt:"IOLTA and client trust account mismanagement is one of the most common sources of bar discipline. The financial habits that protect you are simpler than they sound."},{slug:"succession-planning-solo-small-firm",title:"Succession Planning for Solo and Small-Firm Practice Owners",pillar:"Practice economics",read:4,excerpt:"A solo or small-firm practice is often a founder's largest asset — and the hardest one to sell cleanly. Succession planning should start years before you want to exit."}];function d(e){return c.find(a=>a.slug===e)}let h=(0,r.advisorNiche)(n).topics,m=e=>h.find(a=>a.startsWith(e))??"",p={loans:m("Law school loans"),draws:m("Partnership draws"),retirement:m("Retirement plan choices"),insurance:m("Malpractice and disability"),review:m("A full portfolio")},g={"law-school-debt-repayment-strategies":p.loans,"partner-track-cash-flow-planning":p.draws,"biglaw-bonus-tax-timing":p.review,"associate-to-partner-compensation-transition":p.draws,"malpractice-disability-insurance-solo-practitioners":p.insurance,"law-firm-retirement-plan-structures":p.retirement,"equity-partner-buy-in-buy-out-planning":p.draws,"in-house-counsel-vs-law-firm-compensation":p.review,"trust-account-vs-personal-account-discipline":p.review,"succession-planning-solo-small-firm":p.review},v={"equity-partner-buy-in-buy-out-planning":"buyin","associate-to-partner-compensation-transition":"buyin","law-school-debt-repayment-strategies":"loan"},u=[{id:"loans",name:"Law school loans",topic:p.loans,summary:"Standard repayment against income-driven plans and Public Service Loan Forgiveness, and when refinancing gives up more than it saves.",slugs:["law-school-debt-repayment-strategies"]},{id:"draws",name:"Partnership draws and the move to partner",topic:p.draws,summary:"K-1 income, quarterly estimated tax, capital contributions and buy-in loans, and the year pay changes shape.",slugs:["partner-track-cash-flow-planning","associate-to-partner-compensation-transition","equity-partner-buy-in-buy-out-planning","biglaw-bonus-tax-timing"]},{id:"retirement",name:"Retirement plans by firm type",topic:p.retirement,summary:"401(k), profit-sharing and cash-balance plans, what each firm structure tends to offer, and what a move in-house changes.",slugs:["law-firm-retirement-plan-structures","in-house-counsel-vs-law-firm-compensation"]},{id:"risk",name:"Malpractice, disability and the practice itself",topic:p.insurance,summary:"Coverage when no firm buys it for you, trust-account discipline, and planning the sale or wind-down of a small practice.",slugs:["malpractice-disability-insurance-solo-practitioners","trust-account-vs-personal-account-discipline","succession-planning-solo-small-firm"]}],b=[{slug:"/blog",label:"Articles"},{slug:"/tools",label:"Schedules"},{slug:"/services",label:"Coverage"},{slug:"/about",label:"About"}];function f(e,a){let i="/"===e?"":e.replace(/\/$/,"");return"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}function x(e){return`${e<0?"-":""}
21370$${Math.round(Math.abs(e)).toLocaleString("en-US")}`}function y(){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/counsel/fonts/charis-400.woff2"}),(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/counsel/fonts/archivo.woff2"})]})}let w=Array.from({length:28},(e,a)=>a+1);function _(){return(0,a.jsx)("div",{className:"axm-gutter","aria-hidden":"true",children:(0,a.jsx)("ol",{className:"axm-gutter-nums",children:w.map(e=>(0,a.jsx)("li",{children:e},e))})})}function k({children:e}){return(0,a.jsxs)("div",{className:"axm-root shell-axm",children:[(0,a.jsx)(y,{}),(0,a.jsx)("a",{className:"axm-skip",href:"#main-content",children:"Skip to main content"}),(0,a.jsx)(_,{}),(0,a.jsx)("div",{className:"axm-sheet",children:e})]})}function j(){return(0,a.jsxs)("svg",{className:"axm-mark",width:"30",height:"30",viewBox:"0 0 30 30","aria-hidden":"true",focusable:"false",children:[(0,a.jsx)("rect",{x:"1",y:"1",width:"28",height:"28",fill:"none",stroke:"currentColor",strokeWidth:"2"}),(0,a.jsx)("path",{d:"M8 8v14M11 8v14",stroke:"currentColor",strokeWidth:"1.5"}),(0,a.jsx)("path",{d:"M15 11h8M15 15h8M15 19h6",stroke:"var(--axm-red)",strokeWidth:"1.5"})]})}function N({siteBasePath:e,currentSlug:t}){let{open:r,toggle:n}=(0,s.useMobileMenu)(),l="/"===t?"#advisor":f(e,"/contact"),c=e=>t===e||"/blog"===e&&t.startsWith("/blog/");return(0,a.jsxs)("header",{className:"axm-header",children:[(0,a.jsxs)("div",{className:"axm-header-in",children:[(0,a.jsxs)(i.default,{href:f(e,"/"),className:"axm-brand","aria-label":`${o}, home`,children:[(0,a.jsx)(j,{}),(0,a.jsxs)("span",{className:"axm-brand-txt",children:[(0,a.jsx)("span",{className:"axm-brand-name",children:o}),(0,a.jsx)("span",{className:"axm-brand-sub",children:"Financial planning for attorneys"})]})]}),(0,a.jsx)("nav",{className:"axm-nav","aria-label":"Primary",children:b.map(t=>(0,a.jsx)(i.default,{href:f(e,t.slug),className:"axm-nav-link","aria-current":c(t.slug)?"page":void 0,children:t.label},t.slug))}),(0,a.jsxs)("div",{className:"axm-header-act",children:[(0,a.jsx)(i.default,{href:l,className:"axm-btn axm-btn--red axm-btn--sm",children:"Find an advisor"}),(0,a.jsxs)("button",{type:"button",className:"axm-menu-btn","aria-expanded":r,"aria-controls":"axm-phone-menu",onClick:n,children:[(0,a.jsx)("span",{className:"axm-menu-icon","aria-hidden":"true"}),(0,a.jsx)("span",{className:"axm-menu-txt",children:r?"Close":"Menu"})]})]})]}),(0,a.jsx)("nav",{id:"axm-phone-menu",className:"axm-phone-menu","aria-label":"Menu",hidden:!r,children:(0,a.jsxs)("ul",{children:[b.map(t=>(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,t.slug),className:"axm-phone-link","aria-current":c(t.slug)?"page":void 0,children:t.label})},t.slug)),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"axm-phone-link",children:"Contact"})})]})})]})}function S({siteBasePath:e,currentSlug:t}){let s="/"===t?"#advisor":f(e,"/contact");return(0,a.jsxs)("aside",{className:"axm-phonebar","aria-label":"Find an advisor",children:[(0,a.jsx)("p",{className:"axm-phonebar-t",children:"Matched with an advisor who works with attorneys"}),(0,a.jsx)(i.default,{href:s,className:"axm-btn axm-btn--red",children:"Find an advisor"})]})}function A({siteBasePath:e,docTitle:t}){return(0,a.jsx)("footer",{className:"axm-footer",children:(0,a.jsxs)("div",{className:"axm-footer-in",children:[(0,a.jsxs)("div",{className:"axm-footer-grid",children:[(0,a.jsxs)("div",{className:"axm-footer-lead",children:[(0,a.jsx)("p",{className:"axm-footer-brand",children:o}),(0,a.jsx)("p",{children:"Articles and schedules for attorneys, from first-year associate to equity partner, and a match with a licensed financial advisor when you want one."}),(0,a.jsx)(i.default,{href:f(e,"/contact"),className:"axm-btn axm-btn--red axm-btn--sm",children:"Find an advisor"})]}),(0,a.jsxs)("nav",{className:"axm-footer-nav","aria-label":"Footer",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"axm-footer-h",children:"Read and run"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,"/blog"),children:"Articles"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,"/tools"),children:"Schedules"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,"/services"),children:"Coverage"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,"/about"),children:"About"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,"/contact"),children:"Contact"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,"/advisors"),children:"For advisors"})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"axm-footer-h",children:"Notices"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,"/privacy"),children:"Privacy"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,"/terms"),children:"Terms"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,"/disclaimer"),children:"Disclaimer"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,"/do-not-sell"),children:"Do not sell or share"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,"/editorial-policy"),children:"Editorial policy"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:f(e,"/editorial-team"),children:"Publisher"})})]})]})]})]}),(0,a.jsxs)("p",{className:"axm-footer-note",children:[o," publishes general financial education. It is not a law firm, gives no legal, tax or investment advice, and reading it or asking to be matched creates no advisory or attorney-client relationship. The schedules are illustrations from stated formulas, not quotes. Please do not send client confidence
21370s or privileged information."]}),(0,a.jsxs)("div",{className:"axm-filing",children:[(0,a.jsx)("span",{className:"axm-filing-title",children:t}),(0,a.jsx)("span",{className:"axm-filing-brand",children:o})]})]})})}var z=e.i(247167),C=e.i(3303);let M=z.default.env.NEXT_PUBLIC_TURNSTILE_SITE_KEY;function P({block:e,siteKey:i,siteName:s,pageSlug:r,pageTitle:n,presetTopic:o,variant:l="client"}){let c=e.steps??[{title:e.title}],d=c.length,[h,m]=(0,t.useState)(1),[p,g]=(0,t.useState)(""),[v,u]=(0,t.useState)(!1),[b,f]=(0,t.useState)({kind:"idle"}),x=(0,t.useRef)(null),y=(0,t.useRef)(null),w=(0,t.useRef)(null),_="advisor"===l?"axm-a":"axm-q";(0,t.useEffect)(()=>{o&&(g(o),m(1))},[o]);let k=()=>window.setTimeout(()=>y.current?.focus(),0);function j(){(function(e){let a=x.current;if(!a)return!0;for(let i of Array.from(a.querySelectorAll(`[data-step="${e}"] input, [data-step="${e}"] select, [data-step="${e}"] textarea`)))if(!i.reportValidity())return!1;return!0})(h)&&(m(e=>Math.min(e+1,d)),k())}async function N(a){if(a.preventDefault(),h<d)return void j();let t=a.currentTarget,o=new FormData(t),l=String(o.get("company_website")??"").trim(),c=String(o.get("cf-turnstile-response")??"").trim(),p={};for(let[e,a]of o.entries())"company_website"!==e&&"cf-turnstile-response"!==e&&"string"==typeof a&&(p[e]=a.trim());u(!0);try{let a=await fetch("/api/leads",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({siteKey:i,siteName:s,pageSlug:r,pageTitle:n,sourceUrl:window.location.href,honeypot:l,turnstileToken:c,fields:p})}),o=await a.json().catch(()=>null);if(!a.ok)throw Error(o?.message??"We could not send your request just now. Please try again.");t.reset(),g(""),m(1),f({kind:"success",message:e.successMessage??"Thank you. We have your request."}),window.setTimeout(()=>w.current?.focus(),0)}catch(e){f({kind:"error",message:e instanceof Error?e.message:"We could not send your request just now. Please try again."})}finally{u(!1)}}if("success"===b.kind)return(0,a.jsxs)("div",{ref:w,tabIndex:-1,className:"axm-form axm-form--done",role:"status",children:[(0,a.jsx)("p",{className:"axm-docket",children:"advisor"===l?"Application received":"Request received"}),(0,a.jsx)("h3",{className:"axm-form-h",children:"Thank you."}),(0,a.jsx)("p",{children:b.message}),"advisor"===l?null:(0,a.jsxs)("ol",{className:"axm-paras axm-paras--tight",children:[(0,a.jsx)("li",{children:"We review your answers."}),(0,a.jsx)("li",{children:"We contact you to confirm what you need."}),(0,a.jsx)("li",{children:"We match you with a licensed financial advisor who specializes in legal professionals. You decide what happens next."})]})]});let S=e=>{let i=`${_}-${e.name}`,t=e.required??!1;if("hidden"===e.type)return(0,a.jsx)("input",{type:"hidden",name:e.name,value:e.value??""},e.name);if("checkbox"===e.type)return(0,a.jsxs)("label",{className:"axm-check",children:[(0,a.jsx)("input",{type:"checkbox",name:e.name,value:"yes",required:t}),(0,a.jsx)("span",{children:e.label})]},e.name);let s=!t&&!e.label.toLowerCase().includes("optional"),r=(0,a.jsxs)("label",{htmlFor:i,className:"axm-label",children:[e.label,s?(0,a.jsx)("span",{className:"axm-opt",children:" (optional)"}):null]});if("select"===e.type){let s="help_topic"===e.name;return(0,a.jsxs)("div",{className:"axm-field",children:[r,(0,a.jsxs)("select",{id:i,name:e.name,required:t,className:"axm-input axm-select",...s?{value:p,onChange:e=>g(e.target.value)}:{defaultValue:""},children:[(0,a.jsx)("option",{value:"",disabled:!0,children:"Select one"}),(e.options??[]).map(e=>(0,a.jsx)("option",{value:e,children:e},e))]})]},e.name)}if("textarea"===e.type)return(0,a.jsxs)("div",{className:"axm-field",children:[r,(0,a.jsx)("textarea",{id:i,name:e.name,required:t,rows:4,className:"axm-input"})]},e.name);let n="email"===e.name?"email":"phone"===e.name?"tel":"full_name"===e.name?"name":"location"===e.name?"postal-code":"off";return(0,a.jsxs)("div",{className:"axm-field",children:[r,(0,a.jsx)("input",{id:i,name:e.name,type:e.type,required:t,className:"axm-input",autoComplete:n})]},e.name)};return(0,a.jsxs)("form",{ref:x,className:"axm-form",onSubmit:N,noValidate:!1,children:[(0,a.jsxs)("div",{className:"axm-form-top",children:[(0,a.jsxs)("p",{className:"axm-docket",children:["Step ",h," of ",d]}),(0,a.jsx)("ol",{className:"axm-form-ticks","aria-hidden":"true",children:c.map((e,i)=>(0,a.jsx)("li",{className:i<h?"is-on":""},e.title))})]}),c.map((i,t)=>(0,a.jsxs)("fieldset",{"data-step":t+1,hidden:h!==t+1,className:"axm-step",children:[(0,a.jsx)("legend",{className:"axm-visually-hidden",children:i.title}
21370),(0,a.jsx)("h3",{ref:h===t+1?y:void 0,tabIndex:-1,className:"axm-form-h",children:i.title}),i.description?(0,a.jsx)("p",{className:"axm-form-d",children:i.description}):null,e.fields.filter(e=>(e.step??1)===t+1).map(S)]},i.title)),(0,a.jsxs)("label",{className:"axm-hp","aria-hidden":"true",children:[(0,a.jsx)("span",{children:"Leave this blank"}),(0,a.jsx)("input",{autoComplete:"off",name:"company_website",tabIndex:-1,type:"text"})]}),M?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(C.default,{src:"https://challenges.cloudflare.com/turnstile/v0/api.js",strategy:"afterInteractive",async:!0,defer:!0}),(0,a.jsx)("div",{className:"cf-turnstile","data-sitekey":M,"data-theme":"light"})]}):null,(0,a.jsxs)("div",{className:"axm-form-nav",children:[h>1?(0,a.jsx)("button",{type:"button",className:"axm-btn axm-btn--line",onClick:function(){m(e=>Math.max(1,e-1)),k()},children:"Back"}):null,h<d?(0,a.jsx)("button",{type:"button",className:"axm-btn axm-btn--red",onClick:j,children:"Next"}):(0,a.jsx)("button",{type:"submit",className:"axm-btn axm-btn--red",disabled:v,children:v?"Sending…":e.submitLabel??"Get matched with an advisor"})]}),(0,a.jsx)("div",{className:`axm-status${"error"===b.kind?" axm-status--error":""}`,role:"error"===b.kind?"alert":"status",children:"error"===b.kind?b.message:""})]})}function T(e,a,i){let t=a/100/12;if(t>0&&i<=e*t+.005)return{ok:!1,reason:`A payment of ${x(i)} does not cover the first month's interest of ${x(e*t)}, so the balance never falls.`};let s=[],r=e,n=0,o=0;for(;r>.005&&s.length<600;){let e=r*t,a=Math.min(i,r+e),l=a-e;r=Math.max(0,r-l),n+=a,o+=e,s.push({interest:e,principal:l,balance:r})}return r>.005?{ok:!1,reason:"At this payment the balance takes longer than 50 years to clear."}:{ok:!0,months:s,payment:i,totalPaid:n,totalInterest:o}}function E(e,a,i){let t=a/100/12;return 0===t?e/i:e*t/(1-Math.pow(1+t,-i))}let F={buyin:[{key:"amount",label:"Capital contribution financed",unit:"$",min:5e3,max:5e6,step:5e3},{key:"rate",label:"Annual interest rate",unit:"%",min:0,max:25,step:.25},{key:"years",label:"Term",unit:"yrs",min:1,max:30,step:1},{key:"alt",label:"Compare at another rate",unit:"%",min:0,max:25,step:.25}],loan:[{key:"amount",label:"Loan balance today",unit:"$",min:1e3,max:2e6,step:1e3},{key:"rate",label:"Annual interest rate",unit:"%",min:0,max:25,step:.125},{key:"payment",label:"Monthly payment",unit:"$",min:50,max:1e5,step:50},{key:"alt",label:"Compare with a monthly payment of",unit:"$",min:50,max:1e5,step:50}]},L={buyin:{amount:"250000",rate:"7.5",years:"5",alt:"9"},loan:{amount:"180000",rate:"6.8",payment:"2100",alt:"2800"}};function I(e){let a=Math.floor(e/12),i=e%12;return 0===a?`${i} month${1===i?"":"s"}`:0===i?`${a} year${1===a?"":"s"}`:`${a} yr ${i} mo`}function $({initialMode:e="buyin",exhibit:i="A",headingLevel:s=3,fixed:r=!1}){let n=(0,t.useId)().replace(/:/g,""),[o,l]=(0,t.useState)(e),[c,d]=(0,t.useState)(L),h=c[o],m={},p={};for(let e of F[o]){let a=function(e){let a=Number(String(e).replace(/[$,%\s]/g,""));return Number.isFinite(a)?a:NaN}(h[e.key]);p[e.key]=a,Number.isFinite(a)&&""!==h[e.key].trim()?(a<e.min||a>e.max)&&(m[e.key]=`Between ${"$"===e.unit?x(e.min):e.min} and ${"$"===e.unit?x(e.max):e.max}${"%"===e.unit?"%":"yrs"===e.unit?" years":""}.`):m[e.key]="Enter a number."}let g=0===Object.keys(m).length,{main:v,alt:u}=(0,t.useMemo)(()=>{if(!g)return{main:null,alt:null};if("buyin"===o){let e=Math.round(12*p.years);return{main:T(p.amount,p.rate,E(p.amount,p.rate,e)),alt:T(p.amount,p.alt,E(p.amount,p.alt,e))}}return{main:T(p.amount,p.rate,p.payment),alt:T(p.amount,p.rate,p.alt)}},[o,g,p.amount,p.rate,p.years,p.payment,p.alt]),b="buyin"===o?`at ${p.alt}%`:`paying ${x(p.alt||0)} a month`;return(0,a.jsxs)("div",{className:"axm-exhibit",id:`schedule-${n}`,children:[(0,a.jsxs)("div",{className:"axm-exhibit-tab","aria-hidden":"true",children:["Exhibit ",i]}),(0,a.jsx)(2===s?"h2":"h3",{className:"axm-exhibit-h",children:"buyin"===o?"Partner buy-in loan schedule":"Student-loan payoff schedule"}),(0,a.jsx)("p",{className:"axm-exhibit-note",children:"Illustration only. Your lender’s terms, fees and compounding may differ."}),r?null:(0,a.jsxs)("fieldset",{className:"axm-switch",children:[(0,a.jsx)("legend",{className:"axm-label",children:"Schedule"}),["buyin","loan"].map(e=>(0,a.jsxs)("label",{className:"axm-switch-opt",children:[(0,a.jsx)("input",{type:"radio",name:`mode-${n}`,value:e,checked:o===e,onChange:()=>l(e)}),(0,a.jsx)("span",{children:"buyin"===e?"Partner buy-in":"Student loan"})]},e))]}),(0,a.jsxs)("div",{className:"axm-exhibit-grid",children:[(0,a.jsx)("div",{className:"axm-inputs",children:F[o].map(e=>{let i=`${n}-${o}-${e.key}`,t=m[e.key];return(0,a.jsxs)("div",{className:`axm-field${"alt"===e.key?" axm-field--alt":""}`,children:[(0,a.jsx)("label",{htmlFor:i,className:"axm-label",children:e.label}),(0,a.jsx)("div",{className:`axm-unit axm-unit--${"$"===e.unit?"pre":"post"}`,"data-unit":"yrs"===e.unit?"years":e.unit,children:(0,a.jsx)("input",{id:i,className:"axm-input axm-input--num",type:"number",inputMode:"decimal",min:e.min,max:e.max,step:e.step,value:h[e.key],"aria-invalid":!!t||void 0,"aria-describedby":t?`${i}-err`:void 0,onChange:a=>d(i=>({...i,[o]:{...i[o],[e.key]:a.target.value}}))})}),t?(0,a.jsx)("p",{id:`${i}-err`,className:"axm-err",children:t}):null]},i)})}),(0,a.jsx)("div",{className:"axm-results",children:g?v&&!v.ok?(0,a.jsx)("p",{className:"axm-err",role:"status",children:v.reason}):v&&v.ok?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("dl",{className:"axm-findings","aria-live":"polite",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"buyin"===o?"Monthly payment":"Paid off in"}),(0,a.jsx)("dd",{children:"buyin"===o?x(v.payment):I(v.months.length)})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Total interest"}),(0,a.jsx)("dd",{className:"axm-red-num",children:x(v.totalInterest)})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Total paid"}),(0,a.jsx)("dd",{children:x(v.totalPaid)})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Interest per $1 borrowed"}),(0,a.jsxs)("dd",{children:["$",(v.totalInterest/p.amount).toFixed(2)]})]})]}),u?(0,a.jsx)("p",{className:"axm-compare",children:u.ok?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("span",{className:"axm-compare-k",children:["Compared ",b,":"]})," ","buyin"===o?`${x(u.payment)} a month, `:`paid off in ${I(u.months.length)}, `,"total interest ",x(u.totalInterest)," (",u.totalInterest>=v.totalInterest?"+":"−",x(Math.abs(u.totalInterest-v.totalInterest)),")."]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("span",{className:"axm-compare-k",children:["Compared ",b,":"]})," ",u.reason]})}):null,(0,a.jsx)(B,{main:v,alt:u&&u.ok?u:null,altKind:"buyin"===o?"interest":"balance",altLabel:b,principal:p.amount,uid:n})]}):null:(0,a.jsx)("p",{className:"axm-err",role:"status",children:"Correct the highlighted input to redraw the schedule."})})]}),v&&v.ok&&g?(0,a.jsx)(q,{main:v,uid:n,exhibit:i}):null,(0,a.jsxs)("details",{className:"axm-method",children:[(0,a.jsx)("summary",{children:"Method"}),(0,a.jsxs)("p",{children:["Fixed monthly payments, interest charged monthly at the annual rate divided by 12. For a buy-in loan the payment is ",(0,a.jsxs)("code",{children:["M = P × i ÷ (1 − (1 + i)",(0,a.jsx)("sup",{children:"−n"}),")"]}),", where ",(0,a.jsx)("code",{children:"P"})," is the amount financed,"," ",(0,a.jsx)("code",{children:"i"})," the monthly rate and ",(0,a.jsx)("code",{children:"n"})," the number of months. For a student loan the payment is given and the schedule runs until the balance reaches zero, which takes"," ",(0,a.jsx)("code",{children:"n = −ln(1 − P × i ÷ M) ÷ ln(1 + i)"})," months. Each row charges interest on the balance, applies the rest of the payment to principal, and the last payment is only what is owed. Totals are the sums of the rows. Fees, rate changes, income-driven plans, forgiveness and taxes are not modelled."]})]})]})}function B({main:e,alt:i,altKind:s,altLabel:r,principal:n,uid:o}){let{ref:l,w:c}=function(){let e=(0,t.useRef)(null),[a,i]=(0,t.useState)(640);return(0,t.useEffect)(()=>{let a=e.current;if(!a||"u"<typeof ResizeObserver)return;let t=new ResizeObserver(e=>{let a=Math.round(e[0].contentRect.width);a>0&&i(a)});return t.observe(a),()=>t.disconnect()},[]),{ref:e,w:a}}(),d=Math.max(280,Math.min(c,760)),h=d<480?230:280,m=Math.max(e.months.length,i?.months.length??0),p=e=>{let a=0;return[0,...e.months.map(e=>a+=e.interest)]},g=p(e),v=i?p(i):null,u=function(e){let a=Math.pow(10,Math.floor(Math.log10(e)));for(let i of[1,1.25,1.5,2,2.5,3,4,5,6,8,10])if(i*a>=e)return i*a;return 10*a}(Math.max(n,g[g.length-1],v?v[v.length-1]:0)),b=e=>52+e/m*(d-52-12),f=e=>14+(1-e/u)*(h-14-34),y=e=>e.map((e,a)=>`${0===a?"M":"L"}${b(a).toFixed(1)},${f(e).toFixed(1)}`).join(""),w=e=>[n,...e.months.map(e=>e.balance)],_=[0,.25,.5,.75,1].map(e=>e*u),k=Math.ceil(m/12),j=Math.max(3,Math.floor((d-52)/56)),N=[1,2,5,10].find(e=>k/e+1<=j)??10,S=Array.from({length:Math.floor(k/N)+1},(e,a)=>a*N*12).filter(e=>e<=m),A=`${o}-chart-t`,z=g[g.length-1],C=i?y("interest"===s&&v?v:w(i)):null;return(0,a.jsxs)("figure",{className:"axm-chart",ref:l,children:[(0,a.jsxs)("svg",{viewBox:`0 0 ${d} ${h}`,width:d,height:h,role:"img","aria-labelledby":A,className:"axm-chart-svg",children:[(0,a.jsx)("title",{id:A,children:`Balance falls from ${x(n)} to $0 over ${e.months.length} months while interest paid adds up to ${x(z)}. The table below gives the figures by year.`}),_.map(e=>{let i;return(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:52,x2:d-12,y1:f(e),y2:f(e),className:"axm-grid"}),(0,a.jsx)("text",{x:44,y:f(e)+4,className:"axm-tick",textAnchor:"end",children:(i=Math.abs(e))>=1e6?`$${(i/1e6).toFixed(1).replace(/\.0$/,"")}M`:i>=1e3?`$${Math.round(i/1e3)}
21370k`:`$${Math.round(i)}`})]},e)}),S.map(e=>(0,a.jsx)("text",{x:b(e),y:h-12,className:"axm-tick",textAnchor:0===e?"start":b(e)>d-12-20?"end":"middle",children:0===e?"Now":`Yr ${e/12}`},e)),(0,a.jsx)("path",{d:`${y(w(e))}L${b(e.months.length)},${f(0)}L${b(0)},${f(0)}Z`,className:"axm-area"}),C?(0,a.jsx)("path",{d:C,className:"axm-line-alt"}):null,(0,a.jsx)("path",{d:y(w(e)),className:"axm-line-bal axm-draw",pathLength:1}),(0,a.jsx)("path",{d:y(g),className:"axm-line-int axm-draw",pathLength:1}),(0,a.jsx)("line",{x1:52,x2:52,y1:14,y2:h-34,className:"axm-axis"}),(0,a.jsx)("line",{x1:52,x2:d-12,y1:h-34,y2:h-34,className:"axm-axis"})]}),(0,a.jsxs)("figcaption",{className:"axm-legend",children:[(0,a.jsx)("span",{className:"axm-key axm-key--bal",children:"Balance owed"}),(0,a.jsx)("span",{className:"axm-key axm-key--int",children:"Interest paid so far"}),i?(0,a.jsxs)("span",{className:"axm-key axm-key--alt",children:["interest"===s?"Interest paid":"Balance"," ",r]}):null]})]})}function q({main:e,uid:i,exhibit:t}){let s=[];e.months.forEach((e,a)=>{let i=Math.floor(a/12);s[i]||(s[i]={year:i+1,paid:0,interest:0,principal:0,balance:0}),s[i].paid+=e.interest+e.principal,s[i].interest+=e.interest,s[i].principal+=e.principal,s[i].balance=e.balance});let r=`${i}-tcap`;return(0,a.jsx)("div",{className:"axm-table-wrap",role:"region","aria-labelledby":r,tabIndex:0,children:(0,a.jsxs)("table",{className:"axm-table",children:[(0,a.jsxs)("caption",{id:r,children:["Exhibit ",t,": schedule by year, balance at each year end (illustration)"]}),(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"col",children:"Year"}),(0,a.jsx)("th",{scope:"col",className:"axm-col-paid",children:"Paid"}),(0,a.jsx)("th",{scope:"col",children:"Interest"}),(0,a.jsx)("th",{scope:"col",children:"Principal"}),(0,a.jsx)("th",{scope:"col",children:"End balance"})]})}),(0,a.jsx)("tbody",{children:s.map(e=>(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"row",children:e.year}),(0,a.jsx)("td",{className:"axm-col-paid",children:x(e.paid)}),(0,a.jsx)("td",{children:x(e.interest)}),(0,a.jsx)("td",{children:x(e.principal)}),(0,a.jsx)("td",{children:x(e.balance)})]},e.year))}),(0,a.jsx)("tfoot",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"row",children:"Total"}),(0,a.jsx)("td",{className:"axm-col-paid",children:x(e.totalPaid)}),(0,a.jsx)("td",{className:"axm-red-num",children:x(e.totalInterest)}),(0,a.jsx)("td",{children:x(e.totalPaid-e.totalInterest)}),(0,a.jsx)("td",{children:"—"})]})})]})})}let R=["I","II","III","IV","V","VI","VII","VIII","IX","X"];function H({n:e,id:i,children:t,level:s=2}){return(0,a.jsxs)(2===s?"h2":"h3",{id:i,className:"axm-h2",children:[e?(0,a.jsxs)("span",{className:"axm-h2-n",children:[e,"."]}):null,(0,a.jsx)("span",{children:t})]})}function D({items:e,tight:i}){return(0,a.jsx)("ol",{className:`axm-paras${i?" axm-paras--tight":""}`,children:e.map((e,i)=>(0,a.jsx)("li",{children:e},i))})}function W({docket:e,title:i,lede:t,children:s}){return(0,a.jsxs)("header",{className:"axm-pagehead",children:[(0,a.jsx)("p",{className:"axm-docket",children:e}),(0,a.jsx)("h1",{className:"axm-h1",children:i}),t?(0,a.jsx)("p",{className:"axm-lede",children:t}):null,s]})}function O({block:e}){return(0,a.jsxs)("div",{className:"axm-disclosure",children:[(0,a.jsx)("p",{className:"axm-docket",children:"Disclosure"}),e.disclosure?(0,a.jsx)("p",{children:e.disclosure}):null,(0,a.jsx)("p",{children:"Please do not include client names, matter details or anything privileged or confidential. Ranges are enough for the money questions."})]})}function Y({block:e,n:i,siteKey:t,siteName:s,pageSlug:r,pageTitle:n,topic:o,heading:c}){return(0,a.jsxs)("section",{id:"advisor",className:"axm-sec axm-sec--form","aria-labelledby":"axm-advisor-h",children:[(0,a.jsx)(H,{n:i,id:"axm-advisor-h",children:c??"Request for a match"}),(0,a.jsxs)("div",{className:"axm-form-grid",children:[(0,a.jsxs)("div",{className:"axm-form-side",children:[(0,a.jsx)("p",{className:"axm-body",children:e.body}),(0,a.jsx)(D,{tight:!0,items:["Answer four short steps.","We review your answers and contact you to confirm what you need.",`We match you with a licensed financial advisor who specializes in ${l}. You decide what happens next.`]})]}),(0,a.jsx)(P,{block:e,siteKey:t,siteName:s,pageSlug:r,pageTitle:n,presetTopic:o}),(0,a.jsx)(O,{block:e})]})]})}function V({items:e,siteBasePath:t,withExcerpt:s}){return(0,a.jsx)("ol",{className:"axm-toc",children:e.map(e=>(0,a.jsxs)("li",{className:"axm-toc-row",children:[(0,a.jsxs)("p",{className:"axm-toc-line",children:[(0,a.jsx)(i.default,{href:f(t,`/blog/${e.slug}`),className:"axm-toc-title",children:e.title}),(0,a.jsx)("span",{className:"axm-toc-dots","aria-hidden":"true"}),(0,a.jsxs)("span",{className:"axm-toc-meta",children:[e.pillar," · ",e.read," min"]})]}),s?(0,a.jsx)("p",{className:"axm-toc-ex",children:e.excerpt}):null]},e.slug))})}function G({siteBasePath:e,slug:i,docTitle:t,children:s,after:r}){return(0,a.jsxs)(k,{children:[(0,a.jsx)(N,{siteBasePath:e,currentSlug:i}
21370),(0,a.jsxs)("main",{id:"main-content",tabIndex:-1,className:"axm-main",children:[s,r?(0,a.jsx)("div",{className:"axm-after",children:r}):null]}),(0,a.jsx)(A,{siteBasePath:e,docTitle:t}),(0,a.jsx)(S,{siteBasePath:e,currentSlug:i})]})}function K(e){return e.blocks.find(e=>"lead-form"===e.type)}function U({ctx:e,n:i,heading:t}){let s=K(e.page);return s?(0,a.jsx)(Y,{block:s,n:i,heading:t,siteKey:e.siteKey,siteName:e.siteName,pageSlug:e.page.slug,pageTitle:e.page.title,topic:e.topic}):null}function J({ctx:e}){let{page:t,siteBasePath:s}=e,r=t.slug.replace(/^\/blog\//,""),n=d(r),o=t.blocks.find(e=>"hero"===e.type),h=t.blocks.find(e=>"html-content"===e.type),m=t.blocks.find(e=>"faq"===e.type),u=g[r]??p.review,b=v[r],x=0,y=[],w=h.html.replace(/<h2>([\s\S]*?)<\/h2>/g,(e,a)=>{x+=1;let i=`part-${x}`;return y.push({id:i,text:a.replace(/<[^>]+>/g,"").trim()}),`<h2 id="${i}">${a}</h2>`}),_=Math.max(1,Math.round(h.html.replace(/<[^>]+>/g," ").split(/\s+/).filter(Boolean).length/230)),k=c.filter(e=>e.slug!==r).sort((e,a)=>Number(a.pillar===n?.pillar)-Number(e.pillar===n?.pillar)).slice(0,3);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(W,{docket:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(i.default,{href:f(s,"/blog"),className:"axm-crumb",children:"Articles"})," ","/ ",o?.eyebrow??n?.pillar," / ",_," min read"]}),title:t.title,lede:o?.body??t.summary}),(0,a.jsxs)("div",{className:"axm-article",children:[(0,a.jsxs)("div",{className:"axm-article-main",children:[(0,a.jsx)("div",{className:"axm-prose",dangerouslySetInnerHTML:{__html:w}}),b?(0,a.jsx)("section",{className:"axm-sec axm-sec--flush","aria-label":"Schedule for this article",children:(0,a.jsx)($,{initialMode:b,exhibit:"A"})}):null,(0,a.jsxs)("div",{className:"axm-ask",children:[(0,a.jsx)("p",{className:"axm-ask-t",children:"Want someone to apply this to your own numbers?"}),(0,a.jsxs)("p",{children:["We contact you to confirm what you need, then match you with a licensed financial advisor who specializes in ",l,"."]}),(0,a.jsx)("button",{type:"button",className:"axm-btn axm-btn--red",onClick:()=>e.ask(u),children:"Find an advisor"})]})]}),(0,a.jsxs)("aside",{className:"axm-article-side","aria-label":"In this article",children:[(0,a.jsxs)("nav",{"aria-label":"Contents",children:[(0,a.jsx)("p",{className:"axm-docket",children:"Contents"}),(0,a.jsx)("ol",{className:"axm-side-toc",children:y.map((e,i)=>(0,a.jsx)("li",{children:(0,a.jsxs)("a",{href:`#${e.id}`,children:[(0,a.jsxs)("span",{className:"axm-side-n","aria-hidden":"true",children:[R[i]??i+1,"."]})," ",e.text]})},e.id))})]}),b?(0,a.jsxs)("p",{className:"axm-side-note",children:[(0,a.jsx)("span",{className:"axm-docket",children:"Exhibit A"})," The ","buyin"===b?"buy-in":"loan payoff"," schedule follows the article."]}):null]})]}),m?(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":"axm-faq",children:[(0,a.jsx)(H,{id:"axm-faq",children:m.title}),(0,a.jsx)("div",{className:"axm-faq",children:m.items.map(e=>(0,a.jsxs)("details",{children:[(0,a.jsx)("summary",{children:e.question}),(0,a.jsx)("p",{children:e.answer})]},e.question))})]}):null,(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":"axm-rel",children:[(0,a.jsx)(H,{id:"axm-rel",children:"See also"}),(0,a.jsx)(V,{items:k,siteBasePath:s,withExcerpt:!0})]}),(0,a.jsx)(U,{ctx:e})]})}function X({ctx:e}){let i=e.page.blocks.find(e=>"hero"===e.type),t=Array.from(new Set(c.map(e=>e.pillar)));return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(W,{docket:"Articles",title:"Articles for attorneys",lede:i?.body??e.page.summary}),t.map((i,t)=>(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":`axm-p${t}`,children:[(0,a.jsx)(H,{n:R[t],id:`axm-p${t}`,children:i}),(0,a.jsx)(V,{items:c.filter(e=>e.pillar===i),siteBasePath:e.siteBasePath,withExcerpt:!0})]},i)),(0,a.jsx)(U,{ctx:e,n:R[t.length]})]})}function Z({ctx:e}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(W,{docket:"Schedules",title:"Buy-in and student-loan payoff schedules",lede:"Two amortisation schedules for the loans attorneys carry most often. Each draws the balance year by year, totals the interest, and shows its method. Figures stay in your browser."}),(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":"axm-exa",children:[(0,a.jsx)(H,{n:"I",id:"axm-exa",children:"Financing a partner buy-in"}),(0,a.jsxs)("p",{className:"axm-body",children:["Enter the capital contribution you would finance, the rate and the term. Put the rate you could get elsewhere, from a bank loan or a home equity line, in the comparison box."," ",(0,a.jsx)(i.default,{href:f(e.siteBasePath,"/blog/equity-partner-buy-in-buy-out-planning"),className:"axm-textlink",children:"Read: Buy-In and Buy-Out Planning for Equity Partners"})]}),(0,a.jsx)($,{initialMode:"buyin",exhibit:"A",fixed:!0})]}),(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":"axm-exb",children:[(0,a.jsx)(H,{n:"II",id:"axm-exb",children:"Paying off law school loans"}),(0,a.jsxs)("p",{className:"axm-body",children:["Enter the balance, the rate and what you pay each month, then a larger payment to compare. This is standard repayment arithmetic: income-driven plans and forgiveness follow different rules."," ",(0,a.jsx)(i.default,{href:f(e.siteBasePath,"/blog/law-school-debt-repayment-strategies"),className:"axm-textlink",children:"Read: Law School Debt Repayment"})]}),(0,a.jsx)($,{initialMode:"loan",exhibit:"B",fixed:!0})]}),(0,a.jsx)(U,{ctx:e,n:"III"})]})}function Q({ctx:e}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(W,{docket:"Coverage",title:"What the articles and advisors cover",lede:"Four matters attorneys bring to a financial advisor. Each lists the articles filed under it; the request form lets you pick the same topic."}),u.map((i,t)=>(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":`axm-m-${i.id}`,children:[(0,a.jsx)(H,{n:R[t],id:`axm-m-${i.id}`,children:i.name}),(0,a.jsx)("p",{className:"axm-body",children:i.summary}),(0,a.jsx)(V,{items:i.slugs.map(e=>d(e)).filter(e=>!!e),siteBasePath:e.siteBasePath}),(0,a.jsx)("p",{className:"axm-more",children:(0,a.jsxs)("button",{type:"button",className:"axm-textlink axm-textlink--btn",onClick:()=>e.ask(i.topic),children:["Ask for an advisor about ",i.name.toLowerCase()]})})]},i.id)),(0,a.jsx)(U,{ctx:e,n:R[u.length]})]})}function ee({ctx:e}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(W,{docket:"About",title:`About ${o}`}),(0,a.jsx)("section",{className:"axm-sec axm-sec--flush","aria-label":"About this site",children:(0,a.jsx)(D,{items:[(0,a.jsxs)(a.Fragment,{children:[o," publishes articles and schedules about money for attorneys: associates, counsel, partners, in-house lawyers and solo practitioners."]}),(0,a.jsx)(a.Fragment,{children:"Law-firm pay has its own shape: lockstep salaries and year-end bonuses, the move from W‑2 pay to K‑1 draws with quarterly estimated tax, capital contributions, and retirement plans that depend on the firm. The articles explain those pieces in plain terms. The schedules run in your browser and state their method."}),(0,a.jsxs)(a.Fragment,{children:["When you want a professional, you can ask to be matched. We review your answers, contact you to confirm what you need, then match you with a licensed financial advisor who specializes in ",l,". Advisors join our network to receive these introductions and may pay us for them. We do not recommend or endorse any advisor."]}),(0,a.jsxs)(a.Fragment,{children:[o," is not a law firm, a bar association or an investment adviser. Nothing here is legal, tax or investment advice. How articles are prepared, funded and corrected is set out in the"," ",(0,a.jsx)(i.default,{href:f(e.siteBasePath,"/editorial-policy"),className:"axm-textlink",children:"editorial policy"}),"."]})]})}),(0,a.jsx)(U,{ctx:e,n:"I"})]})}function ea({ctx:e}){let i=e.page.blocks.find(e=>"hero"===e.type),t=e.page.blocks.find(e=>"story"===e.type),s=K(e.page);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(W,{docket:"Contact",title:i?.title??e.page.title,lede:i?.body}),s?(0,a.jsxs)("section",{id:"advisor",className:"axm-sec axm-sec--form","aria-labelledby":"axm-c-h",children:[(0,a.jsx)(H,{n:"I",id:"axm-c-h",children:s.title}),(0,a.jsxs)("div",{className:"axm-form-grid",children:[(0,a.jsx)("div",{className:"axm-form-side",children:t?(0,a.jsx)(D,{tight:!0,items:t.highlights}):null}),(0,a.jsx)(P,{block:s,siteKey:e.siteKey,siteName:e.siteName,pageSlug:e.page.slug,pageTitle:e.page.title,presetTopic:e.topic}),(0,a.jsx)(O,{block:s})]})]}):null]})}function ei({ctx:e}){let t=e.page.blocks.find(e=>"hero"===e.type),s=e.page.blocks.find(e=>"story"===e.type),r=K(e.page),n=t?.primaryCta;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(W,{docket:"For financial advisors",title:t?.title??e.page.title,lede:t?.body,children:n?(0,a.jsx)("p",{children:(0,a.jsx)(i.default,{href:f(e.siteBasePath,n.href),className:"axm-textlink",children:n.label})}):null}),s?(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":"axm-adv-how",children:[(0,a.jsx)(H,{n:"I",id:"axm-adv-how",children:s.title}),(0,a.jsx)("p",{className:"axm-body",children:s.body}),(0,a.jsx)(D,{items:s.highlights})]}):null,r?(0,a.jsxs)("section",{id:"apply",className:"axm-sec axm-sec--form","aria-labelledby":"axm-adv-apply",children:[(0,a.jsx)(H,{n:"II",id:"axm-adv-apply",children:r.title}),(0,a.jsxs)("div",{className:"axm-form-grid",children:[(0,a.jsxs)("div",{className:"axm-form-side",children:[(0,a.jsx)("p",{className:"axm-body",children:r.body}),r.disclosure?(0,a.jsx)("p",{className:"axm-small",children:r.disclosure}):null]}),(0,a.jsx)(P,{variant:"advisor",block:r,siteKey:e.siteKey,siteName:e.siteName,pageSlug:e.page.slug,pageTitle:e.page.title})]})]}):null]})}function et({ctx:e}){let t=e.page.blocks,s=t[0],r=s&&("story"===s.type||"hero"===s.type)?s:void 0,n=r?t.slice(1):t,o=0;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(W,{docket:r?.eyebrow??"Notice",title:r?.t
21370itle??e.page.title,lede:r?.body??e.page.summary,children:r&&"story"===r.type&&r.highlights.length?(0,a.jsxs)("div",{className:"axm-summary",children:[(0,a.jsx)("p",{className:"axm-docket",children:"In short"}),(0,a.jsx)("ul",{children:r.highlights.map(e=>(0,a.jsx)("li",{children:e},e))})]}):null}),n.map((t,s)=>{if("lead-form"===t.type)return null;let r=R[o++],n=`axm-b${s}`;switch(t.type){case"split-panel":return(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":n,children:[(0,a.jsx)(H,{n:r,id:n,children:t.title}),t.body?(0,a.jsx)("p",{className:"axm-body axm-small",children:t.body}):null,(0,a.jsx)("ol",{className:"axm-clauses",children:t.panels.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"axm-clause-h",children:e.heading}),(0,a.jsx)("p",{children:e.body})]},e.heading))})]},s);case"story":return(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":n,children:[(0,a.jsx)(H,{n:r,id:n,children:t.title}),(0,a.jsx)("p",{className:"axm-body",children:t.body}),t.highlights.length?(0,a.jsx)(D,{items:t.highlights}):null]},s);case"services":return(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":n,children:[(0,a.jsx)(H,{n:r,id:n,children:t.title}),t.body?(0,a.jsx)("p",{className:"axm-body",children:t.body}):null,(0,a.jsx)("ol",{className:"axm-clauses",children:t.items.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"axm-clause-h",children:e.title}),(0,a.jsx)("p",{children:e.description})]},e.title))})]},s);case"faq":return(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":n,children:[(0,a.jsx)(H,{n:r,id:n,children:t.title}),(0,a.jsx)("div",{className:"axm-faq",children:t.items.map(e=>(0,a.jsxs)("details",{children:[(0,a.jsx)("summary",{children:e.question}),(0,a.jsx)("p",{children:e.answer})]},e.question))})]},s);case"html-content":return(0,a.jsx)("section",{className:"axm-sec","aria-label":e.page.title,children:(0,a.jsx)("div",{className:"axm-prose",dangerouslySetInnerHTML:{__html:t.html}})},s);case"cta-band":return(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":n,children:[(0,a.jsx)(H,{n:r,id:n,children:t.title}),t.body?(0,a.jsx)("p",{className:"axm-body",children:t.body}):null,(0,a.jsx)(i.default,{href:/^https?:|^#/.test(t.primaryCta.href)?t.primaryCta.href:f(e.siteBasePath,t.primaryCta.href),className:"axm-btn axm-btn--red",children:t.primaryCta.label})]},s);default:if(!t.title&&!t.body)return null;return(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":n,children:[t.title?(0,a.jsx)(H,{n:r,id:n,children:t.title}):null,t.body?(0,a.jsx)("p",{className:"axm-body",children:t.body}):null]},s)}}),(0,a.jsx)(U,{ctx:e,n:R[o]})]})}let es={"/blog":"Articles","/tools":"Buy-in and loan schedules","/services":"Coverage","/about":"About","/contact":"Request for a match","/advisors":"For financial advisors"};e.s([],544212),e.i(544212),e.s(["ContentPage",0,function({page:e,siteBasePath:i="",siteKey:s,siteName:r,after:n}){let o,[l,c]=(0,t.useState)(""),h={page:e,siteBasePath:i,siteKey:s,siteName:r,topic:l,ask:e=>{c(e),function(){let e=document.getElementById("advisor");if(!e)return;let a=window.matchMedia("(prefers-reduced-motion: reduce)").matches;e.scrollIntoView({behavior:a?"auto":"smooth",block:"start"})}()}},m=e.slug.startsWith("/blog/")&&e.blocks.some(e=>"html-content"===e.type);o=m?(0,a.jsx)(J,{ctx:h}):"/blog"===e.slug?(0,a.jsx)(X,{ctx:h}):"/tools"===e.slug?(0,a.jsx)(Z,{ctx:h}):"/services"===e.slug?(0,a.jsx)(Q,{ctx:h}):"/about"===e.slug?(0,a.jsx)(ee,{ctx:h}):"/contact"===e.slug?(0,a.jsx)(ea,{ctx:h}):"/advisors"===e.slug?(0,a.jsx)(ei,{ctx:h}):(0,a.jsx)(et,{ctx:h});let p=m?(d(e.slug.replace(/^\/blog\//,""))?.pillar??"Article")+" — article":es[e.slug]??e.title;return(0,a.jsx)(G,{siteBasePath:i,slug:e.slug,docTitle:p,after:n,children:o})},"HomePage",0,function({siteBasePath:e="",advisorBlock:t}){let s=["equity-partner-buy-in-buy-out-planning","law-school-debt-repayment-strategies","partner-track-cash-flow-planning","associate-to-partner-compensation-transition","law-firm-retirement-plan-structures","malpractice-disability-insurance-solo-practitioners"].map(e=>d(e)).filter(e=>!!e);return(0,a.jsxs)(G,{siteBasePath:e,slug:"/",docTitle:"Financial planning for attorneys",children:[(0,a.jsxs)("section",{className:"axm-caption-sec","aria-labelledby":"axm-h1",children:[(0,a.jsxs)("p",{className:"axm-court",children:["Financial planning for attorneys",(0,a.jsx)("br",{}),"from first-year associate to equity partner"]}),(0,a.jsxs)("div",{className:"axm-caption",children:[(0,a.jsxs)("div",{className:"axm-caption-l",children:[(0,a.jsx)("p",{className:"axm-inre",children:"In re: your money"}),(0,a.jsx)("p",{className:"axm-parties",children:"Law school loans, lockstep bonuses, K‑1 draws, capital calls, and whichever retirement plan your firm happens to offer."})]}),(0,a.jsx)("div",{className:"axm-caption-paren","aria-hidden":"true"}),(0,a.jsxs)("div",{className:"axm-caption-r",children:[(0,a.jsx)("p",{className:"axm-docket",children:"Request for a match"}),(0,a.jsx)("h1",{id:"axm-h1",className:"axm-h1 axm-h1--home",children:"Get matched with a financial advisor who works with attorneys"})]})]}),(0,a.jsx)(D,{items:[(0,a.jsx)(a.Fragment,{children:"Law-firm pay does not behave like a salary. Bonuses land in one month, partner draws arrive with no tax with
21370held, and a buy-in can mean a six-figure loan in the same year your pay changes shape."}),(0,a.jsx)(a.Fragment,{children:"These pages explain those pieces in plain terms, and the schedules below let you run your own numbers."}),(0,a.jsxs)(a.Fragment,{children:["When you want a professional, answer a few questions. We review your answers, contact you to confirm what you need, then match you with a licensed financial advisor who specializes in ",l,"."]})]}),(0,a.jsxs)("div",{className:"axm-hero-act",children:[(0,a.jsx)("a",{href:"#advisor",className:"axm-btn axm-btn--red",children:"Find an advisor"}),(0,a.jsx)("a",{href:"#exhibit",className:"axm-textlink",children:"Run the buy-in schedule"})]})]}),(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":"axm-how",children:[(0,a.jsx)(H,{n:"I",id:"axm-how",children:"How a match works"}),(0,a.jsxs)("ol",{className:"axm-steps",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"axm-step-h",children:"Answer a few questions"}),(0,a.jsx)("p",{children:"Where you are in your career, what you want help with, and rough ranges for income and assets. Four short steps."})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"axm-step-h",children:"We review and contact you"}),(0,a.jsx)("p",{children:"A person reads your answers, then contacts you by phone or email to confirm what you need."})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"axm-step-h",children:"We match you"}),(0,a.jsxs)("p",{children:["With a licensed financial advisor who specializes in ",l,". Asking is not a commitment; you decide what happens next."]})]})]})]}),(0,a.jsxs)("section",{id:"exhibit",className:"axm-sec","aria-labelledby":"axm-ex",children:[(0,a.jsx)(H,{n:"II",id:"axm-ex",children:"The numbers behind a buy-in"}),(0,a.jsx)("p",{className:"axm-body",children:"A capital contribution financed over a few years is a fixed payment that comes out of your draws until it is repaid. Enter the amount, the rate and the term to see the payment, the balance by year and the interest, and compare the firm’s rate with one you could get yourself. Switch to the student-loan schedule to see how long a balance takes to clear at a given payment."}),(0,a.jsx)($,{initialMode:"buyin",exhibit:"A"}),(0,a.jsx)("p",{className:"axm-more",children:(0,a.jsx)(i.default,{href:f(e,"/tools"),className:"axm-textlink",children:"Both schedules on one page"})})]}),(0,a.jsxs)("section",{className:"axm-sec","aria-labelledby":"axm-read",children:[(0,a.jsx)(H,{n:"III",id:"axm-read",children:"Table of contents"}),(0,a.jsx)("p",{className:"axm-body",children:"Ten articles on the money side of a legal career. About four minutes each."}),(0,a.jsx)(V,{items:s,siteBasePath:e}),(0,a.jsx)("p",{className:"axm-more",children:(0,a.jsx)(i.default,{href:f(e,"/blog"),className:"axm-textlink",children:"All ten articles"})})]}
21370),(0,a.jsx)(Y,{block:t,n:"IV",siteKey:n,siteName:o,pageSlug:"/",pageTitle:o,heading:t.title}),(0,a.jsxs)("section",{className:"axm-sec axm-sec--close","aria-labelledby":"axm-concl",children:[(0,a.jsx)(H,{id:"axm-concl",children:"Conclusion"}),(0,a.jsx)("p",{className:"axm-body",children:"Reading gets you the questions. An advisor who already works with attorneys can put your loans, draws, bonus timing and firm plan on one page with you."}),(0,a.jsx)("a",{href:"#advisor",className:"axm-btn axm-btn--red",children:"Find an advisor"})]})]})}],983333)},846096,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645),s=e.i(600951),r=e.i(525320);let n="scientistfinancialadvisor.com",o="Empirical Finance",l=(0,r.advisorNiche)(n).specialty,c=[{id:"career",name:"Career arc",blurb:"Stipend years, the tenure clock, sabbaticals and the move from academia to industry.",figure:{label:"Figure 1: stipend path into industry pay",to:"/tools#figure-1"}},{id:"income",name:"Income",blurb:"Grant-funded salary, gaps between awards, and patent and royalty income.",figure:{label:"Figure 2: buffer for a funding gap",to:"/tools#figure-2"}},{id:"retirement",name:"Retirement",blurb:"403(b) and 457 plans, TIAA and other vendors, and moving a balance between universities.",figure:{label:"Figure 3: the cost of a late start",to:"/tools#figure-3"}},{id:"grants",name:"Grants",blurb:"What indirect costs are, and how grant budgets touch your own pay."}],d=[{slug:"grant-funded-salary-soft-money-planning",title:"Financial Planning on Grant-Funded S
21370alary and Soft-Money Positions",pillar:"Income",area:"income",excerpt:"When your salary depends on renewing your own grants, standard financial planning assumptions about income stability need to be rebuilt from scratch."},{slug:"403b-tiaa-retirement-basics-university-employees",title:"403(b) and TIAA Retirement Basics for University Employees",pillar:"Retirement",area:"retirement",excerpt:"University retirement plans look like corporate 401(k)s on the surface but carry a distinct vendor history and structure worth understanding before you enroll."},{slug:"postdoc-to-faculty-income-transition",title:"Planning the Postdoc-to-Faculty Income Transition",pillar:"Career arc",area:"career",excerpt:"The jump from postdoc stipend to a starting faculty salary is large, but startup funds, moving costs, and delayed first paychecks complicate the picture."},{slug:"nih-nsf-indirect-costs-researcher-compensation",title:"NIH and NSF Indirect Costs: What They Actually Mean for Researcher Compensation",pillar:"Grants",area:"grants",excerpt:"Indirect costs are one of the most misunderstood line items in academic research funding. Here is what they are, and are not, and how they touch your paycheck."},{slug:"tenure-track-timeline-financial-planning",title:"The Academic Tenure-Track Timeline and Its Financial Planning Implications",pillar:"Career arc",area:"career",excerpt:"The six-or-seven-year tenure clock creates a financial planning horizon unlike most careers — income uncertainty concentrated at a single, knowable future date."},{slug:"university-403b-vs-401k-vendor-options",title:"Comparing University 403(b) vs. 401(k) Vendor Options",pillar:"Retirement",area:"retirement",excerpt:"Public and private universities structure retirement plans differently, and the vendor menu you are handed on day one can materially affect your long-run returns."},{slug:"sabbatical-financial-planning",title:"Sabbatical Financial Planning: Income Gaps, Grants, and Timing",pillar:"Career arc",area:"career",excerpt:"A sabbatical is a career benefit with real financial mechanics behind it — partial pay, external funding options, and timing decisions worth planning a year out."},{slug:"patent-royalty-income-tax-basics-inventor-researchers",title:"Patent and Royalty Income Tax Basics for Inventor-Researchers",pillar:"Income",area:"income",excerpt:"When your research produces a patent, the royalty income that follows has its own tax treatment questions most researchers have never had to think about."},{slug:"academia-to-industry-compensation-comparison",title:"Comparing Academic and Industry Compensation for Scientists",pillar:"Career arc",area:"career",excerpt:"Industry offers usually look larger at first glance, but comparing them to an academic package requires accounting for benefits, equity, and job security differences."},{slug:"403b-transfers-retirement-plan-portability",title:"Retirement Plan Portability Between Universities: How 403(b) Transfers Actually Work",pillar:"Retirement",area:"retirement",excerpt:"Moving between universities mid-career raises real questions about what happens to your 403(b) balance — and the answer depends on plan rules you should check before you move."}];function h(e){return d.find(a=>a.slug===e)}let m=(0,r.advisorNiche)(n).topics;function p(e){return m.includes(e)?e:""}let g={postdoc:p("Saving on a postdoc or grant-funded income"),industry:p("A move from academia to industry"),retirement:p("Academic retirement plans (403(b), 457)"),loans:p("Student loans"),equity:p("Startup or spin-out equity"),review:p("A full portfolio and wealth review")},v={career:g.industry,income:g.postdoc,retirement:g.retirement,grants:g.postdoc},u={"grant-funded-salary-soft-money-planning":g.postdoc,"403b-tiaa-retirement-basics-university-employees":g.retirement,"postdoc-to-faculty-income-transition":g.postdoc,"nih-nsf-indirect-costs-researcher-compensation":g.postdoc,"tenure-track-timeline-financial-planning":g.review,"university-403b-vs-401k-vendor-options":g.retirement,"sabbatical-financial-planning":g.review,"patent-royalty-income-tax-basics-inventor-researchers":g.equity,"academia-to-industry-compensation-comparison":g.industry,"403b-transfers-retirement-plan-portability":g.retirement},b={"postdoc-to-faculty-income-transition":{label:"Figure 1: stipend path into higher pay",to:"/tools#figure-1"},"academia-to-industry-compensation-comparison":{label:"Figure 1: stipend path into industry pay",to:"/tools#figure-1"},"tenure-track-timeline-financial-planning":{label:"Figure 1: stipend path into higher pay",to:"/tools#figure-1"},"grant-funded-salary-soft-money-planning":{label:"Figure 2: buffer for a funding gap",to:"/tools#figure-2"},"sabbatical-financial-planning":{label:"Figure 2: buffer for a funding gap",to:"/tools#figure-2"},"403b-tiaa-retirement-basics-university-employees":{label:"Figure 3: the cost of a late start",to:"/tools#figure-3"},"university-403b-vs-401k-vendor-options":{label:"Figure 3: the cost of a late start",to:"/tools#figure-3"},"403b-transfers-retirement-plan-portability":{label:"Figure 3: the cost of a late start",to:"/tools#figure-3"}},f=[{slug:"/blog",label:"Articles"},{slug:"/tools",label:"Figures"},{slug:"/services",label:"Coverage"},{slug:"/about",label:"About"}];function x(e,a){let i=e&&"/"!==e?e.replace(/\/$/,""):"";return"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}function y(e){let a=Math.abs(e),i=e<0?"−":"";return a>=1e6?`${i}$${(a/1e6).toFixed(a>=1e7?0:1)}
21370M`:a>=1e3?`${i}$${Math.round(a/1e3)}k`:`${i}$${Math.round(a)}`}function w(e){return`${e<0?"−":""}$${Math.round(Math.abs(e)).toLocaleString("en-US")}`}function _(){let e=document.getElementById("advisor");if(!e)return;let a=window.matchMedia("(prefers-reduced-motion: reduce)").matches;e.scrollIntoView({behavior:a?"auto":"smooth",block:"start"});let i=e.querySelector("[data-emp-focus]");window.setTimeout(()=>i?.focus({preventScroll:!0}),400*!a)}var k=e.i(247167),j=e.i(3303);let N=k.default.env.NEXT_PUBLIC_TURNSTILE_SITE_KEY;function S({block:e,siteKey:i,siteName:s,pageSlug:r,pageTitle:n,presetTopic:o,variant:l="client",stepLevel:c=3}){let d=e.steps??[{title:e.title}],h=d.length,[m,p]=(0,t.useState)(1),[g,v]=(0,t.useState)(""),[u,b]=(0,t.useState)(!1),[f,x]=(0,t.useState)({kind:"idle"}),y=(0,t.useRef)(null),w=(0,t.useRef)(null),_=(0,t.useRef)(null),k=`h${c}`;(0,t.useEffect)(()=>{o&&(v(o),p(1))},[o]);let A=()=>window.setTimeout(()=>w.current?.focus(),0);function z(){(function(e){let a=y.current;if(!a)return!0;for(let i of Array.from(a.querySelectorAll(`[data-step="${e}"] input, [data-step="${e}"] select, [data-step="${e}"] textarea`)))if(!i.reportValidity())return!1;return!0})(m)&&(p(e=>Math.min(e+1,h)),A())}async function C(a){if(a.preventDefault(),m<h)return void z();let t=a.currentTarget,o=new FormData(t),l=String(o.get("company_website")??"").trim(),c=String(o.get("cf-turnstile-response")??"").trim(),d={};for(let[e,a]of o.entries())"company_website"!==e&&"cf-turnstile-response"!==e&&"string"==typeof a&&(d[e]=a.trim());b(!0);try{let a=await fetch("/api/leads",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({siteKey:i,siteName:s,pageSlug:r,pageTitle:n,sourceUrl:window.location.href,honeypot:l,turnstileToken:c,fields:d})}),o=await a.json().catch(()=>null);if(!a.ok)throw Error(o?.message??"We could not send your request just now. Please try again.");t.reset(),v(""),p(1),x({kind:"success",message:e.successMessage??"Thank you. We have your request."}),window.setTimeout(()=>_.current?.focus(),0)}catch(e){x({kind:"error",message:e instanceof Error?e.message:"We could not send your request just now. Please try again."})}finally{b(!1)}}if("success"===f.kind)return(0,a.jsxs)("div",{ref:_,tabIndex:-1,className:"emp-quiz emp-quiz--done",role:"status",children:[(0,a.jsx)("p",{className:"emp-label",children:"advisor"===l?"Application received":"Request received"}),(0,a.jsx)("p",{className:"emp-quiz-thanks",children:"Thank you."}),(0,a.jsx)("p",{children:f.message}),"advisor"===l?null:(0,a.jsxs)("ol",{className:"emp-proc emp-proc--tight",children:[(0,a.jsx)("li",{children:"We review your answers."}),(0,a.jsx)("li",{children:"We contact you to confirm what you need."}),(0,a.jsx)("li",{children:"We match you with a licensed financial advisor who specializes in this area. You decide what happens next."})]})]});let M=e=>{let i=`emp-q-${e.name}`,t=e.required??!1;if("hidden"===e.type)return(0,a.jsx)("input",{type:"hidden",name:e.name,value:e.value??""},e.name);if("checkbox"===e.type)return(0,a.jsxs)("label",{className:"emp-check",children:[(0,a.jsx)("input",{type:"checkbox",name:e.name,value:"yes",required:t}),(0,a.jsx)("span",{children:e.label})]},e.name);let s=!t&&!e.label.toLowerCase().includes("optional"),r=(0,a.jsxs)("label",{htmlFor:i,className:"emp-field-label",children:[e.label,s?(0,a.jsx)("span",{className:"emp-field-opt",children:" (optional)"}):null]});if("select"===e.type){let s="help_topic"===e.name;return(0,a.jsxs)("div",{className:"emp-field",children:[r,(0,a.jsxs)("select",{id:i,name:e.name,required:t,className:"emp-input emp-select",...s?{value:g,onChange:e=>v(e.target.value)}:{defaultValue:""},children:[(0,a.jsx)("option",{value:"",disabled:!0,children:"Select…"}),(e.options??[]).map(e=>(0,a.jsx)("option",{value:e,children:e},e))]})]},e.name)}return"textarea"===e.type?(0,a.jsxs)("div",{className:"emp-field",children:[r,(0,a.jsx)("textarea",{id:i,name:e.name,required:t,rows:4,className:"emp-input"})]},e.name):(0,a.jsxs)("div",{className:"emp-field",children:[r,(0,a.jsx)("input",{id:i,name:e.name,type:e.type,required:t,className:"emp-input",autoComplete:"email"===e.name?"email":"phone"===e.name?"tel":"full_name"===e.name?"name":"location"===e.name?"postal-code":"off"})]},e.name)};return(0,a.jsxs)("form",{ref:y,className:"emp-quiz",onSubmit:C,"aria-label":"advisor"===l?"Advisor application":"Advisor match request",children:[(0,a.jsxs)("div",{className:"emp-quiz-progress",children:[(0,a.jsxs)("p",{className:"emp-label emp-quiz-count",children:["Step ",m," of ",h]}
21370),(0,a.jsx)("ol",{className:"emp-quiz-bar","aria-hidden":!0,children:d.map((e,i)=>(0,a.jsx)("li",{className:i<m?"is-on":""},e.title))})]}),d.map((i,t)=>(0,a.jsxs)("fieldset",{"data-step":t+1,hidden:m!==t+1,className:"emp-quiz-step",children:[(0,a.jsxs)(k,{ref:m===t+1?w:void 0,tabIndex:-1,className:"emp-quiz-h",children:[(0,a.jsxs)("span",{className:"emp-quiz-h-no",children:[t+1,"."]})," ",i.title]}),i.description?(0,a.jsx)("p",{className:"emp-quiz-d",children:i.description}):null,e.fields.filter(e=>(e.step??1)===t+1).map(M)]},i.title)),(0,a.jsxs)("label",{className:"emp-hp","aria-hidden":"true",children:[(0,a.jsx)("span",{children:"Leave this blank"}),(0,a.jsx)("input",{autoComplete:"off",name:"company_website",tabIndex:-1,type:"text"})]}),N?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(j.default,{src:"https://challenges.cloudflare.com/turnstile/v0/api.js",strategy:"afterInteractive",async:!0,defer:!0}),(0,a.jsx)("div",{className:"cf-turnstile","data-sitekey":N,"data-theme":"light"})]}):null,(0,a.jsxs)("div",{className:"emp-quiz-nav",children:[m>1?(0,a.jsx)("button",{type:"button",className:"emp-btn emp-btn--line",onClick:function(){p(e=>Math.max(1,e-1)),A()},children:"Back"}):null,m<h?(0,a.jsx)("button",{type:"button",className:"emp-btn",onClick:z,children:"Next"}):(0,a.jsx)("button",{type:"submit",className:"emp-btn",disabled:u,children:u?"Sending…":e.submitLabel??"Get matched with an advisor"})]}),(0,a.jsx)("div",{className:`emp-status${"error"===f.kind?" emp-status--error":""}`,role:"error"===f.kind?"alert":"status",children:"error"===f.kind?f.message:""})]})}function A(){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/science/fonts/stix-two-text.woff2"}),(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/science/fonts/instrument-sans.woff2"})]})}function z({size:e=26}){return(0,a.jsxs)("svg",{width:e,height:e,viewBox:"0 0 26 26","aria-hidden":!0,className:"emp-mark",focusable:"false",children:[(0,a.jsx)("rect",{x:"0.75",y:"0.75",width:"24.5",height:"24.5",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),(0,a.jsx)("path",{d:"M13 5v16M9.5 5h7M9.5 21h7",stroke:"currentColor",strokeWidth:"1.6"}),(0,a.jsx)("circle",{cx:"13",cy:"11",r:"3",fill:"var(--emp-link)"})]})}function C({children:e}){return(0,a.jsxs)("div",{className:"emp-root shell-emp",children:[(0,a.jsx)(A,{}),(0,a.jsx)("a",{className:"emp-skip",href:"#main-content",children:"Skip to main content"}),e]})}function M({siteBasePath:e,currentSlug:t}){let{open:r,toggle:n}=(0,s.useMobileMenu)(),l="/"===t?"#advisor":x(e,"/contact"),c=e=>t===e||"/blog"===e&&t.startsWith("/blog/")?"page":void 0;return(0,a.jsxs)("header",{className:"emp-head",children:[(0,a.jsxs)("div",{className:"emp-head-in",children:[(0,a.jsxs)(i.default,{href:x(e,"/"),className:"emp-brand","aria-label":`${o}, home`,children:[(0,a.jsx)(z,{}),(0,a.jsxs)("span",{className:"emp-brand-name",children:[(0,a.jsx)("span",{children:"Empirical"})," ",(0,a.jsx)("span",{children:"Finance"})]})]}),(0,a.jsx)("nav",{className:"emp-nav","aria-label":"Primary",children:f.map(t=>(0,a.jsx)(i.default,{href:x(e,t.slug),className:"emp-nav-link","aria-current":c(t.slug),children:t.label},t.slug))}),(0,a.jsxs)("div",{className:"emp-head-actions",children:[(0,a.jsx)(i.default,{href:l,className:"emp-btn emp-btn--sm",children:"Find an advisor"}),(0,a.jsxs)("button",{type:"button",className:"emp-menu-btn","aria-expanded":r,"aria-controls":"emp-menu",onClick:n,children:[(0,a.jsx)("span",{className:"emp-menu-icon","aria-hidden":!0,"data-open":r?"true":"false"}),(0,a.jsx)("span",{className:"emp-sr",children:r?"Close menu":"Menu"})]})]})]}),(0,a.jsx)("nav",{id:"emp-menu",className:"emp-menu","aria-label":"Menu",hidden:!r,children:(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/"),className:"emp-menu-link","aria-current":c("/"),children:"Home"})}),f.map(t=>(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,t.slug),className:"emp-menu-link","aria-current":c(t.slug),children:t.label})},t.slug)),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/contact"),className:"emp-menu-link","aria-current":c("/contact"),children:"Contact"})})]})})]})}function P({siteBasePath:e,currentSlug:t}){let s="/"===t?"#advisor":x(e,"/contact");return(0,a.jsxs)("div",{className:"emp-sticky",children:[(0,a.jsx)("p",{className:"emp-sticky-t",children:"Matched with an advisor who knows research careers"}),(0,a.jsx)(i.default,{href:s,className:"emp-btn",children:"Find an advisor"})]})}function T({siteBasePath:e}){return(0,a.jsx)("footer",{className:"emp-foot",children:(0,a.jsxs)("div",{className:"emp-foot-in",children:[(0,a.jsxs)("div",{className:"emp-foot-brand",children:[(0,a.jsxs)("p",{className:"emp-foot-logo",children:[(0,a.jsx)(z,{size:24}),(0,a.jsx)("span",{children:o})]}),(0,a.jsxs)("p",{className:"emp-foot-tag",children:["Articles and figures on money for research careers, and a match with a licensed financial advisor who specializes in"," ",l,"."]}),(0,a.jsx)(i.default,{href:x(e,"/contact"),className:"emp-btn emp-btn--sm",children:"Find an advisor"})]}),(0,a.jsxs)("nav",{className:"emp-foot-cols","aria-label":"Footer",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"emp-foot-h",children:"Read"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/blog"),children:"Articles"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/tools"),children:"Figures"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/services"),children:"Coverage"})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"emp-foot-h",children:"About"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/about"),children:"About"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/editorial-policy"),children:"Editorial policy"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/editorial-team"),children:"About this publication"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/contact"),children:"Contact"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/advisors"),children:"For advisors"})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"emp-foot-h",children:"Legal"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/privacy"),children:"Privacy"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/terms"),children:"Terms"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/disclaimer"),children:"Disclaimer"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:x(e,"/do-not-sell"),children:"Do not sell or share"})})]})]})]}),(0,a.jsxs)("p",{className:"emp-foot-note",children:[o,"is an educational publisher. It does not give personalized investment, tax or legal advice, recommend securities or manage money, and asking to be matched does not create an advisory relationship. Any relationship is between you and the licensed financial advisor you are matched with, under that advisor’s own agreement and disclosures. Figures are illustrations computed from the inputs shown, not forecasts."]})]})})}function E({items:e}){let[i,s]=(0,t.useState)(!1),[r,n]=(0,t.useState)("");return((0,t.useEffect)(()=>
21370{if("u"<typeof IntersectionObserver)return;let a=e.map(e=>document.getElementById(e.id)).filter(e=>!!e),i=new Map,t=new IntersectionObserver(a=>{for(let e of a)i.set(e.target.id,e.isIntersecting);let t=e.find(e=>i.get(e.id));t&&n(t.id)},{rootMargin:"-20% 0px -60% 0px"});return a.forEach(e=>t.observe(e)),()=>t.disconnect()},[e]),e.length<2)?(0,a.jsx)("div",{className:"emp-toc emp-toc--empty"}):(0,a.jsxs)("nav",{className:"emp-toc","aria-label":"Contents",children:[(0,a.jsxs)("button",{type:"button",className:"emp-toc-btn","aria-expanded":i,"aria-controls":"emp-toc-list",onClick:()=>s(e=>!e),children:["Contents",(0,a.jsx)("span",{className:"emp-toc-chev","aria-hidden":!0})]}),(0,a.jsx)("p",{className:"emp-toc-h","aria-hidden":!0,children:"Contents"}),(0,a.jsx)("ol",{id:"emp-toc-list",className:"emp-toc-list","data-open":i?"true":"false",children:e.map(e=>(0,a.jsx)("li",{children:(0,a.jsxs)("a",{href:`#${e.id}`,"aria-current":r===e.id?"location":void 0,onClick:()=>s(!1),children:[e.no?(0,a.jsx)("span",{className:"emp-toc-no",children:e.no}):null,(0,a.jsx)("span",{children:e.label})]})},e.id))})]})}function F({left:e,right:i}){return(0,a.jsxs)("p",{className:"emp-running",children:[(0,a.jsx)("span",{children:e}),i?(0,a.jsx)("span",{children:i}):null]})}function L({id:e,no:i,title:t,children:s,wide:r}){return(0,a.jsxs)("section",{id:e,"aria-labelledby":`${e}-h`,className:`emp-sec${r?" emp-sec--wide":""}`,children:[(0,a.jsxs)("h2",{id:`${e}-h`,className:"emp-h2",children:[i?(0,a.jsx)("span",{className:"emp-secno",children:i}):null,i?" ":null,t]}),s]})}function I({children:e,note:i}){return(0,a.jsxs)("div",{className:"emp-row",children:[(0,a.jsx)("div",{className:"emp-row-main",children:e}),i?(0,a.jsx)("div",{className:"emp-mnote",role:"note",children:i}):null]})}function $({block:e,no:i,title:t,lede:s,siteKey:r,siteName:n,pageSlug:o,pageTitle:c,topic:d,steps:h=!0}){let m=e.fields.some(e=>"crd_number"===e.name),p=m?"apply":"advisor";return(0,a.jsxs)("section",{id:p,"aria-labelledby":`${p}-h`,className:"emp-sec emp-sec--match",children:[(0,a.jsxs)("h2",{id:`${p}-h`,className:"emp-h2",tabIndex:-1,"data-emp-focus":!0,children:[i?(0,a.jsx)("span",{className:"emp-secno",children:i}):null,i?" ":null,t??e.title]}),(0,a.jsxs)("div",{className:"emp-row",children:[(0,a.jsxs)("div",{className:"emp-row-main",children:[(0,a.jsx)("p",{className:"emp-p",children:s??e.body}),m||!h?null:(0,a.jsxs)("ol",{className:"emp-proc emp-proc--tight",children:[(0,a.jsx)("li",{children:"Answer a few short questions. Ranges are fine."}),(0,a.jsx)("li",{children:"We review your answers and contact you to confirm what you need."}),(0,a.jsxs)("li",{children:["We match you with a licensed financial advisor who specializes in ",l,"."]})]}),(0,a.jsx)(S,{block:e,siteKey:r,siteName:n,pageSlug:o,pageTitle:c,presetTopic:d,variant:m?"advisor":"client"})]}),(0,a.jsxs)("div",{className:"emp-mnote emp-mnote--disclosure",role:"note",children:[(0,a.jsx)("p",{className:"emp-label",children:"Disclosure"}),e.disclosure?(0,a.jsx)("p",{children:e.disclosure}):null,m?null:(0,a.jsx)("p",{children:"Please do not include account numbers, passwords or unpublished research details."})]})]})]})}function B({onAsk:e,href:t,label:s="Get matched"}){return(0,a.jsxs)("div",{className:"emp-corr",children:[(0,a.jsxs)("p",{className:"emp-corr-t",children:[(0,a.jsx)("span",{className:"emp-label",children:"Correspondence"})," ","Want someone to apply this to your own numbers? We review your answers, contact you to confirm what you need, then match you with a licensed financial advisor who specializes in ",l,"."]}),e?(0,a.jsx)("button",{type:"button",className:"emp-btn",onClick:e,children:s}):t?(0,a.jsx)(i.default,{href:t,className:"emp-btn",children:s}):null]})}let q="#009E73",R="#0072B2",H="#D55E00";function D({xMax:e,xLabel:i,yLabel:s,series:r,band:n,marker:o,titleId:l,descId:c}){let{ref:d,w:h}=function(e=720){let a=(0,t.useRef)(null),[i,s]=(0,t.useState)(e);return(0,t.useEffect)(()=>{let e=a.current;if(!e||"u"<typeof ResizeObserver)return;let i=new ResizeObserver(e=>{let a=Math.round(e[0].contentRect.width);a>0&&s(a)});return i.observe(e),()=>i.disconnect()},[]),{ref:a,w:i}}(),m=h<520,p=Math.round(Math.min(400,Math.max(270,.52*h))),g={l:m?46:58,r:m?58:92,t:34,b:46},v=Math.max(60,h-g.l-g.r),u=p-g.t-g.b,b=function(e,a){let i,t,s,r=e>0?e:1,n=(t=Math.pow(10,Math.floor(Math.log10(i=r/Math.max(1,a)))),((s=i/t)<=1?1:s<=2?2:s<=2.5?2.5:s<=5?5:10)*t),o=[];for(let e=0;e<=r+.999*n;e+=n)o.push(e);return o}(Math.max(...r.flatMap(e=>e.values),...n?n.hi:[],1),m?4:5),f=b[b.length-1],x=a=>
21370g.l+a/e*v,w=e=>g.t+u-e/f*u,_=e<=16?m?5:1:m?10:5,k=[];for(let a=0;a<=e;a+=_)k.push(a);k[k.length-1]!==e&&k.push(e);let j=r.map(e=>({key:e.key,label:e.label,v:e.values[e.values.length-1],color:e.color,y:w(e.values[e.values.length-1])})).sort((e,a)=>e.y-a.y);for(let e=1;e<j.length;e++)j[e].y-j[e-1].y<30&&(j[e].y=j[e-1].y+30);let N=j.length?j[j.length-1].y-(g.t+u+8):0;if(N>0)for(let e of j)e.y-=N;let S="";if(n){let e=n.hi.map((e,a)=>`${0===a?"M":"L"}${x(a).toFixed(1)},${w(e).toFixed(1)}`).join(""),a=n.lo.map((e,a)=>[a,e]).reverse().map(([e,a])=>`L${x(e).toFixed(1)},${w(a).toFixed(1)}`).join("");S=`${e}${a}Z`}return(0,a.jsx)("div",{ref:d,className:"emp-chart",children:(0,a.jsxs)("svg",{width:"100%",height:p,viewBox:`0 0 ${h} ${p}`,role:"img","aria-labelledby":l,"aria-describedby":c,className:"emp-chart-svg",children:[b.map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:g.l,x2:g.l+v,y1:w(e),y2:w(e),className:0===e?"emp-axis-line":"emp-grid"}),(0,a.jsx)("text",{x:g.l-8,y:w(e),dy:"0.32em",textAnchor:"end",className:"emp-tick",children:y(e)})]},e)),k.map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:x(e),x2:x(e),y1:g.t+u,y2:g.t+u+5,className:"emp-axis-line"}),(0,a.jsx)("text",{x:x(e),y:g.t+u+18,textAnchor:"middle",className:"emp-tick",children:e})]},e)),(0,a.jsx)("line",{x1:g.l,x2:g.l,y1:g.t,y2:g.t+u,className:"emp-axis-line"}),(0,a.jsx)("text",{x:g.l+v/2,y:p-6,textAnchor:"middle",className:"emp-axis-title",children:i}),(0,a.jsx)("text",{x:0,y:12,className:"emp-axis-title",children:s}),n?(0,a.jsx)("path",{d:S,fill:n.color,className:"emp-band"}):null,o&&o.x>0&&o.x<e?(0,a.jsxs)("g",{className:"emp-marker",children:[(0,a.jsx)("line",{x1:x(o.x),x2:x(o.x),y1:g.t,y2:g.t+u}),(0,a.jsx)("text",{x:x(o.x)+6,y:g.t+12,className:"emp-marker-label",children:o.label})]}):null,r.map(e=>(0,a.jsx)("path",{d:e.values.map((e,a)=>`${0===a?"M":"L"}${x(a).toFixed(1)},${w(e).toFixed(1)}`).join(""),fill:"none",stroke:e.color,strokeWidth:e.width??2,strokeDasharray:e.dash,strokeLinejoin:"round",strokeLinecap:"round",className:e.dash?"emp-line":"emp-line emp-line--draw",pathLength:e.dash?void 0:1},e.key)),r.map(e=>(0,a.jsx)("circle",{cx:x(e.values.length-1),cy:w(e.values[e.values.length-1]),r:3.5,fill:e.color},`${e.key}-end`)),j.map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("text",{x:g.l+v+8,y:e.y,dy:"-0.15em",className:"emp-endlabel-k",children:e.label}),(0,a.jsx)("text",{x:g.l+v+8,y:e.y,dy:"1.05em",className:"emp-endlabel-v",children:y(e.v)})]},`${e.key}-lab`))]})})}function W({id:e,label:i,unit:t,prefix:s,value:r,onChange:n,min:o,max:l,step:c,hint:d}){let h=d?`${e}-hint`:void 0;return(0,a.jsxs)("div",{className:"emp-num",children:[(0,a.jsxs)("label",{htmlFor:e,className:"emp-num-label",children:[i,(0,a.jsxs)("span",{className:"emp-sr",children:[" (",O[t??s??""]??"",")"]})]}),d?(0,a.jsx)("p",{id:h,className:"emp-num-hint",children:d}):null,(0,a.jsxs)("div",{className:"emp-num-box",children:[s?(0,a.jsx)("span",{className:"emp-num-affix","aria-hidden":!0,children:s}):null,(0,a.jsx)("input",{id:e,type:"number",inputMode:"decimal",min:o,max:l,step:c,value:r,"aria-describedby":h,onChange:e=>n(e.target.value),className:"emp-num-input"}),t?(0,a.jsx)("span",{className:"emp-num-affix","aria-hidden":!0,children:t}):null]})]})}let O={"%":"percent",yr:"years",mo:"months",$:"dollars"};function Y(e,a,i,t){let s=Number(e);return""!==e.trim()&&Number.isFinite(s)?Math.min(t,Math.max(i,s)):a}function V({color:e,dash:i}){return(0,a.jsx)("svg",{width:"28",height:"10","aria-hidden":!0,className:"emp-swatch",children:(0,a.jsx)("line",{x1:"1",x2:"27",y1:"5",y2:"5",stroke:e,strokeWidth:"2.5",strokeDasharray:i,strokeLinecap:"round"})})}function G(e,a){let i=e.raise/100;return a<=e.years?e.stipend*Math.pow(1+i,a-1):e.industry*Math.pow(1+i,a-1-e.years)}function K(e){let a=[0],i=0;for(let t=1;t<=15;t++)a.push(i=i*(1+e.ret/100)+e.savings/100*G(e,t));return a}function U(e){return{stipend:.9*e.stipend,raise:Math.max(0,e.raise-1),years:Math.min(15,e.years+1),industry:.85*e.industry,savings:Math.max(0,e.savings-3),ret:e.ret-2}}function J(e){return{stipend:1.1*e.stipend,raise:e.raise+1,years:Math.max(0,e.years-1),industry:1.15*e.industry,savings:e.savings+3,ret:e.ret+2}}let X={stipend:"Starting stipend (±10%)",raise:"Annual raise (±1 point)",years:"Years as a postdoc (±1 year)",industry:"Industry salary (±15%)",savings:"Savings rate (±3 points)",ret:"Annual return (±2 points)"};function Z({full:e=!1,number:i="1"}){let s=(0,t.useId)().replace(/:/g,""),[r,n]=(0,t.useState)({stipend:String(6e4),raise:String(3),years:String(4),industry:String(12e4),savings:String(10),ret:String(5)}),o=e=>a=>n(i=>({...i,[e]:a})),l={stipend:Y(r.stipend,6e4,0,5e5),raise:Y(r.raise,3,0,15),years:Math.round(Y(r.years,4,0,10)),industry:Y(r.industry,12e4,0,1e6),savings:Y(r.savings,10,0,80),ret:Y(r.ret,5,-5,15)},c=K(l),d=K(U(l)),h=K(J(l)),m=K({...l,years:Math.min(15,l.years+1)})[15]-c[15],p=`${s}-t`,g=`${s}-d`,v=c[15],u=Object.keys(X).map(e=>{let a=K({...l,[e]:U(l)[e]})[15],i=K({...l,[e]:J(l)[e]})[15];return{k:e,label:X[e],low:a,high:i,swing:Math.abs(i-a)}}).sort((e,a)=>a.swing-e.swing),b=Math.max(...u.map(e=>Math.max(Math.abs(e.low-v),Math.abs(e.high-v))),1);return(0,a.jsxs)("figure",{className:"emp-figure",id:`figure-${i}`,"aria-labelledby":p,children:[(0,a.jsxs)("div",{className:"emp-fig-control
21370s",role:"group","aria-label":`Assumptions for Figure ${i}`,children:[(0,a.jsx)("p",{className:"emp-label",children:"Assumptions (illustrative defaults)"}),(0,a.jsxs)("div",{className:"emp-num-grid",children:[(0,a.jsx)(W,{id:`${s}-stipend`,label:"Starting stipend, per year",prefix:"$",value:r.stipend,onChange:o("stipend"),min:0,max:5e5,step:1e3}),(0,a.jsx)(W,{id:`${s}-raise`,label:"Annual raise",unit:"%",value:r.raise,onChange:o("raise"),min:0,max:15,step:.5}),(0,a.jsx)(W,{id:`${s}-years`,label:"Years as a postdoc",unit:"yr",value:r.years,onChange:o("years"),min:0,max:10,step:1}),(0,a.jsx)(W,{id:`${s}-industry`,label:"Industry salary, first year",prefix:"$",value:r.industry,onChange:o("industry"),min:0,max:1e6,step:5e3}),(0,a.jsx)(W,{id:`${s}-savings`,label:"Savings rate, of gross pay",unit:"%",value:r.savings,onChange:o("savings"),min:0,max:80,step:1}),(0,a.jsx)(W,{id:`${s}-ret`,label:"Annual return",unit:"%",value:r.ret,onChange:o("ret"),min:-5,max:15,step:.5})]})]}),(0,a.jsxs)("div",{className:"emp-fig-body",children:[(0,a.jsxs)("ul",{className:"emp-legend","aria-label":"Legend",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)(V,{color:q,dash:"7 4"})," High case"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)(V,{color:R})," Base case (your inputs)"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)(V,{color:H,dash:"2 4"})," Low case"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"emp-swatch-band","aria-hidden":!0})," Sensitivity band"]})]}),(0,a.jsx)(D,{xMax:15,xLabel:"Years from the start of the postdoc",yLabel:"Cumulative savings",titleId:p,descId:g,band:{lo:d,hi:h,color:"#56B4E9"},marker:{x:l.years,label:`Move, year ${l.years}`},series:[{key:"hi",label:"High",values:h,color:q,dash:"7 4",width:2},{key:"base",label:"Base",values:c,color:R,width:3},{key:"lo",label:"Low",values:d,color:H,dash:"2 4",width:2}]}),(0,a.jsxs)("p",{className:"emp-readout","aria-live":"polite",children:["After ",15," years: ",(0,a.jsx)("strong",{className:"emp-nb",children:w(v)})," in the base case, between"," ",(0,a.jsx)("span",{className:"emp-nb",children:w(d[15])})," and ",(0,a.jsx)("span",{className:"emp-nb",children:w(h[15])})," across the band.",l.years<15?(0,a.jsxs)(a.Fragment,{children:[" ","One more postdoc year changes the base case by ",(0,a.jsx)("strong",{className:"emp-nb",children:w(m)}),"."]}):null]})]}),(0,a.jsxs)("figcaption",{className:"emp-caption",children:[(0,a.jsxs)("span",{id:p,children:[(0,a.jsxs)("b",{children:["Figure ",i,"."]})," Cumulative savings over ",15," years for a researcher who spends ",l.years," ",1===l.years?"year":"years"," on a postdoc stipend and then moves to an industry salary."]})," ",(0,a.jsxs)("span",{id:g,children:["Solid line: base case from the inputs above. Shaded band and dashed lines: low and high cases, which move every assumption at once by the amount in the Method note. ",(0,a.jsx)("em",{children:"Illustration, not a forecast or a survey figure."})," Values for every year are in Table ",i,"."]})]}),e?(0,a.jsxs)("div",{className:"emp-oat",children:[(0,a.jsxs)("p",{className:"emp-label",id:`${s}-oat`,children:["Figure ",i,"b. Which assumption moves year-",15," savings most, one at a time"]}),(0,a.jsx)("ul",{className:"emp-oat-list","aria-labelledby":`${s}-oat`,children:u.map(e=>{let i=Math.abs(e.low-v)/b*50,t=Math.abs(e.high-v)/b*50;return(0,a.jsxs)("li",{className:"emp-oat-row",children:[(0,a.jsx)("span",{className:"emp-oat-name",children:e.label}),(0,a.jsxs)("span",{className:"emp-oat-bar","aria-hidden":!0,children:[(0,a.jsx)("span",{className:"emp-oat-lo",style:{width:`${i}%`}}),(0,a.jsx)("span",{className:"emp-oat-hi",style:{width:`${t}%`}})]}),(0,a.jsxs)("span",{className:"emp-oat-val",children:[y(e.low)," to ",y(e.high)]})]},e.k)})}),(0,a.jsxs)("p",{className:"emp-note",children:["Each row changes one assumption to its low and its high value and holds the others at your inputs. Bars grow left (orange) for the low value and right (blue) for the high value from the base result of ",w(v),"."]})]}):null,(0,a.jsxs)("details",{className:"emp-table-wrap",children:[(0,a.jsxs)("summary",{children:["Table ",i,". Values plotted in Figure ",i]}),(0,a.jsx)("div",{className:"emp-table-scroll",tabIndex:0,role:"region","aria-label":`Table ${i}, scrollable`,children:(0,a.jsxs)("table",{className:"emp-table",children:[(0,a.jsx)("caption",{className:"emp-sr",children:"Pay and cumulative savings by year, base, low and high cases"}),(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"col",children:"Year"}),(0,a.jsx)("th",{scope:"col",children:"Pay, base"}),(0,a.jsx)("th",{scope:"col",children:"Low"}),(0,a.jsx)("th",{scope:"col",children:"Base"}),(0,a.jsx)("th",{scope:"col",children:"High"})]})}),(0,a.jsx)("tbody",{children:c.slice(1).map((e,i)=>(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"row",children:i+1}),(0,a.jsx)("td",{children:w(G(l,i+1))}),(0,a.jsx)("td",{children:w(d[i+1])}),(0,a.jsx)("td",{children:w(e)}),(0,a.jsx)("td",{children:w(h[i+1])})]},i))})]})})]}),(0,a.jsxs)("div",{className:"emp-method",children:[(0,a.jsx)("p",{className:"emp-label",children:"Method"}),(0,a.jsxs)("p",{children:["Pay in year ",(0,a.jsx)("var",{children:"t"}),": ",(0,a.jsx)("var",{children:"P"}),(0,a.jsx)("sub",{children:(0,a.jsx)("var",{children:"t"})})," ","= ",(0,a.jsx)("var",{children:"S"}),"(1 + ",(0,a.jsx)("var",{children:"g"}),")",(0,a.jsxs)("sup",{children:[(0,a.jsx)("var",{children:"t"}),"−1"]})," ","while ",(0,a.jsx)("var",{children:"t"})," ≤ ",(0,a.jsx)("var",{children:"T"}),", and ",(0,a.jsx)("var",{children:"I"}),"(1 + ",(0,a.jsx)("var",{children:"g"}),")",(0,a.jsxs)("sup",{children:[(0,a.jsx)("var",{children:"t"}),"−1−",(0,a.jsx)("var",{children:"T"})]})," ","after, where ",(0,a.jsx)("var",{children:"S"})," is the starting stipend, ",(0,a.jsx)("var",{children:"g"})," the annual raise, ",(0,a.jsx)("var",{children:"T"})," the postdoc years and"," ",(0,a.jsx)("var",{children:"I"})," the first industry salary."]}),(0,a.jsxs)("p",{children:["Savings: ",(0,a.jsx)("var",{children:"B"}),(0,a.jsx)("sub",{children:(0,a.jsx)("var",{children:"t"})})," ","= ",(0,a.jsx)("var",{children:"B"}),(0,a.jsxs)("sub",{children:[(0,a.jsx)("var",{children:"t"}),"−1"]}),"(1 + ",(0,a.jsx)("var",{children:"r"}),") + ",(0,a.jsx)("var",{children:"s"}),"·",(0,a.jsx)("var",{children:"P"}),(0,a.jsx)("sub",{children:(0,a.jsx)("var",{children:"t"})}),", with ",(0,a.jsx)("var",{children:"B"}),(0,a.jsx)("sub",{children:"0"})," = 0, ",(0,a.jsx)("var",{children:"s"})," the savings rate and ",(0,a.jsx)("var",{children:"r"})," ","the annual return. Each year’s saving is added at the year’s end."]}),(0,a.jsxs)("p",{children:["Low case: ",(0,a.jsx)("var",{children:"S"})," −10%, ",(0,a.jsx)("var",{children:"g"})," −1 point, ",(0,a.jsx)("var",{children:"T"})," +1 year, ",(0,a.jsx)("var",{children:"I"})," −15%, ",(0,a.jsx)("var",{children:"s"})," −3 points,"," ",(0,a.jsx)("var",{children:"r"})," −2 points. High case: the reverse. Pay is before tax; dollars are not adjusted for inflation; there is no employer match, fee, loan payment or gap between jobs."]})]})]})}function Q(){let e=(0,t.useId)().replace(/:/g,""),[i,s]=(0,t.useState)({spend:"3500",pay:"4800",share:"50",bridge:"3",gap:"9",cushion:"3"}),r=e=>a=>s(i=>({...i,[e]:a})),n=Y(i.spend,3500,0,1e5),o=Y(i.pay,4800,0,1e5),l=Y(i.share,50,0,100)/100,c=Y(i.bridge,3,0,36),d=Y(i.gap,9,0,36),h=Y(i.cushion,3,0,24),m=Math.max(0,d-c),p=Math.max(0,n-(1-l)*o),g=h*n,v=p*m,u=g+v,b=n>0?u/n:0,f=Math.max(8,Math.ceil(b+1)),x=e=>`${e/f*100}%`,y=[],_=f>24?6:f>12?3:1;for(let e=0;e<=f;e+=_)y.push(e);let k=`${e}-t`;return(0,a.jsxs)("figure",{className:"emp-figure",id:"figure-2","aria-labelledby":k,children:[(0,a.jsxs)("div",{className:"emp-fig-control
21370s",role:"group","aria-label":"Assumptions for Figure 2",children:[(0,a.jsx)("p",{className:"emp-label",children:"Assumptions (illustrative defaults)"}),(0,a.jsxs)("div",{className:"emp-num-grid",children:[(0,a.jsx)(W,{id:`${e}-spend`,label:"Essential spending, per month",prefix:"$",value:i.spend,onChange:r("spend"),min:0,max:1e5,step:100}),(0,a.jsx)(W,{id:`${e}-pay`,label:"Take-home pay, per month",prefix:"$",value:i.pay,onChange:r("pay"),min:0,max:1e5,step:100}),(0,a.jsx)(W,{id:`${e}-share`,label:"Share of salary paid by grants",unit:"%",value:i.share,onChange:r("share"),min:0,max:100,step:5}),(0,a.jsx)(W,{id:`${e}-bridge`,label:"Bridge funding your institution pays",unit:"mo",value:i.bridge,onChange:r("bridge"),min:0,max:36,step:1,hint:"Ask your department in writing."}),(0,a.jsx)(W,{id:`${e}-gap`,label:"Gap you plan for between awards",unit:"mo",value:i.gap,onChange:r("gap"),min:0,max:36,step:1}),(0,a.jsx)(W,{id:`${e}-cushion`,label:"Ordinary cushion",unit:"mo",value:i.cushion,onChange:r("cushion"),min:0,max:24,step:1})]})]}),(0,a.jsxs)("div",{className:"emp-fig-body",children:[(0,a.jsxs)("div",{className:"emp-hbar",role:"img","aria-labelledby":k,"aria-describedby":`${e}-r`,children:[(0,a.jsxs)("div",{className:"emp-hbar-scale",children:[(0,a.jsx)("span",{className:"emp-hbar-guide",style:{left:x(3),width:x(3)},children:(0,a.jsx)("span",{className:"emp-hbar-guide-l",children:"3 to 6 months, the usual rule"})}),(0,a.jsx)("span",{className:"emp-hbar-seg emp-hbar-seg--a",style:{width:x(h)}}),(0,a.jsx)("span",{className:"emp-hbar-seg emp-hbar-seg--b",style:{left:x(h),width:x(b-h)}})]}),(0,a.jsx)("div",{className:"emp-hbar-axis","aria-hidden":!0,children:y.map(e=>(0,a.jsx)("span",{style:{left:x(e)},children:e},e))}),(0,a.jsx)("p",{className:"emp-hbar-title","aria-hidden":!0,children:"Months of essential spending"})]}),(0,a.jsxs)("ul",{className:"emp-legend","aria-label":"Legend",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"emp-sq",style:{background:R},"aria-hidden":!0})," Ordinary cushion: ",w(g)]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"emp-sq emp-sq--hatch","aria-hidden":!0})," Cover for the uncovered gap: ",w(v)]})]}),(0,a.jsxs)("p",{className:"emp-readout",id:`${e}-r`,"aria-live":"polite",children:["Buffer to hold: ",(0,a.jsx)("strong",{className:"emp-nb",children:w(u)}),", about ",(0,a.jsxs)("strong",{className:"emp-nb",children:[b.toFixed(1)," months"]})," of essential spending.",m>0?` The gap outlasts bridge funding by ${m} ${1===m?"month":"months"}, and each of those months is ${w(p)} short.`:" Bridge funding covers the whole gap you planned for."]})]}),(0,a.jsxs)("figcaption",{className:"emp-caption",children:[(0,a.jsxs)("span",{id:k,children:[(0,a.jsx)("b",{children:"Figure 2."})," Cash buffer for a researcher whose salary is partly paid by grants, in months of essential spending."]})," ","The bracket marks the common three-to-six-month rule for comparison. ",(0,a.jsx)("em",{children:"Illustration from your inputs, not a recommendation."})]}),(0,a.jsxs)("div",{className:"emp-method",children:[(0,a.jsx)("p",{className:"emp-label",children:"Method"}),(0,a.jsxs)("p",{children:["Monthly shortfall during a gap: ",(0,a.jsx)("var",{children:"D"})," = max(0, ",(0,a.jsx)("var",{children:"E"})," − (1 − ",(0,a.jsx)("var",{children:"f"}),")",(0,a.jsx)("var",{children:"M"}),"), where ",(0,a.jsx)("var",{children:"E"})," ","is essential spending, ",(0,a.jsx)("var",{children:"M"})," take-home pay and ",(0,a.jsx)("var",{children:"f"})," the grant-paid share. Uncovered months:"," ",(0,a.jsx)("var",{children:"U"})," = max(0, ",(0,a.jsx)("var",{children:"G"})," − ",(0,a.jsx)("var",{children:"B"}),"). Buffer = ",(0,a.jsx)("var",{children:"C"}),"·",(0,a.jsx)("var",{children:"E"})," + ",(0,a.jsx)("var",{children:"U"}),"·",(0,a.jsx)("var",{children:"D"}),", with"," ",(0,a.jsx)("var",{children:"C"})," the ordinary cushion in months. It assumes the non-grant share of pay continues through the gap and benefits continue; check both with your institution."]})]})]})}function ee(e,a,i){return i<=0?0:0===a?e*i:(Math.pow(1+a,i)-1)/a*e}function ea(){let e=(0,t.useId)().replace(/:/g,""),[i,s]=(0,t.useState)({amount:"6000",ret:"5",years:"35",delay:"4"}),r=e=>a=>s(i=>({...i,[e]:a})),n=Y(i.amount,6e3,0,2e5),o=Y(i.ret,5,-5,15)/100,l=Math.round(Y(i.years,35,1,50)),c=Math.min(l,Math.round(Y(i.delay,4,0,20))),d=[],h=[];for(let e=0;e<=l;e++)d.push(ee(n,o,e)),h.push(e<=c?0:ee(n,o,e-c));let m=d[l]-h[l],p=n*c,g=`${e}-t`,v=`${e}-d`;return(0,a.jsxs)("figure",{className:"emp-figure",id:"figure-3","aria-labelledby":g,children:[(0,a.jsxs)("div",{className:"emp-fig-control
21370s",role:"group","aria-label":"Assumptions for Figure 3",children:[(0,a.jsx)("p",{className:"emp-label",children:"Assumptions (illustrative defaults)"}),(0,a.jsxs)("div",{className:"emp-num-grid",children:[(0,a.jsx)(W,{id:`${e}-amount`,label:"Contribution, per year",prefix:"$",value:i.amount,onChange:r("amount"),min:0,max:2e5,step:500}),(0,a.jsx)(W,{id:`${e}-ret`,label:"Annual return",unit:"%",value:i.ret,onChange:r("ret"),min:-5,max:15,step:.5}),(0,a.jsx)(W,{id:`${e}-years`,label:"Years until you stop working",unit:"yr",value:i.years,onChange:r("years"),min:1,max:50,step:1}),(0,a.jsx)(W,{id:`${e}-delay`,label:"Years before you start",unit:"yr",value:i.delay,onChange:r("delay"),min:0,max:20,step:1})]})]}),(0,a.jsxs)("div",{className:"emp-fig-body",children:[(0,a.jsxs)("ul",{className:"emp-legend","aria-label":"Legend",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)(V,{color:R})," Start now"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)(V,{color:H,dash:"2 4"})," Start after ",c," ",1===c?"year":"years"]})]}),(0,a.jsx)(D,{xMax:l,xLabel:"Years from today",yLabel:"Plan balance",titleId:g,descId:v,series:[{key:"now",label:"Now",values:d,color:R,width:3},{key:"late",label:"Later",values:h,color:H,dash:"2 4",width:2}]}),(0,a.jsxs)("p",{className:"emp-readout","aria-live":"polite",children:["Difference at the end: ",(0,a.jsx)("strong",{className:"emp-nb",children:w(m)}),". Of that, ",w(p)," is the contributions skipped and"," ",w(m-p)," is the growth they would have earned."]})]}),(0,a.jsxs)("figcaption",{className:"emp-caption",children:[(0,a.jsxs)("span",{id:g,children:[(0,a.jsx)("b",{children:"Figure 3."})," Retirement-plan balance when the same yearly contribution starts today or ",c," ",1===c?"year":"years"," later, both ending on the same date."]})," ",(0,a.jsxs)("span",{id:v,children:[(0,a.jsx)("em",{children:"Illustration, not a forecast."})," For reference, the IRS limit on employee deferrals to a 403(b) plan was $23,500 for 2025 (IRS, 2024); it changes most years, so check the current figure."]})]}),(0,a.jsxs)("div",{className:"emp-method",children:[(0,a.jsx)("p",{className:"emp-label",children:"Method"}),(0,a.jsxs)("p",{children:["Balance after ",(0,a.jsx)("var",{children:"n"})," yearly contributions of ",(0,a.jsx)("var",{children:"A"})," at return ",(0,a.jsx)("var",{children:"r"}),": ",(0,a.jsx)("var",{children:"A"}),"[(1 + ",(0,a.jsx)("var",{children:"r"}),")",(0,a.jsx)("sup",{children:(0,a.jsx)("var",{children:"n"})})," ","− 1] / ",(0,a.jsx)("var",{children:"r"}),". Start now: ",(0,a.jsx)("var",{children:"n"})," = ",(0,a.jsx)("var",{children:"N"}),". Start later: ",(0,a.jsx)("var",{children:"n"})," = ",(0,a.jsx)("var",{children:"N"})," − ",(0,a.jsx)("var",{children:"D"}),". No employer contribution, fees or tax are modelled."]})]})]})}let ei=[{id:"abstract",label:"Abstract"},{id:"introduction",label:"Introduction",no:"1"},{id:"methods",label:"Methods: how the match works",no:"2"},{id:"results",label:"Results: Figure 1",no:"3"},{id:"discussion",label:"Discussion",no:"4"},{id:"advisor",label:"Get matched",no:"5"},{id:"references",label:"References"}];function et({n:e}){return(0,a.jsx)("sup",{className:"emp-ref",children:(0,a.jsx)("a",{href:`#ref-${e}`,"aria-label":`Reference ${e}`,children:e})})}let es=["postdoc-to-faculty-income-transition","grant-funded-salary-soft-money-planning","academia-to-industry-compensation-comparison","403b-tiaa-retirement-basics-university-employees","403b-transfers-retirement-plan-portability"];function er({siteBasePath:e,advisorBlock:s}){let[r,n]=(0,t.useState)(""),c=e=>{n(e),_()},h=es.map(e=>d.find(a=>a.slug===e)).filter(e=>!!e);return(0,a.jsxs)(C,{children:[(0,a.jsx)(M,{siteBasePath:e,currentSlug:"/"}),(0,a.jsx)("main",{id:"main-content",tabIndex:-1,className:"emp-main",children:(0,a.jsxs)("article",{className:"emp-paper",children:[(0,a.jsxs)("header",{className:"emp-paper-head",children:[(0,a.jsx)(F,{left:`${o} \xb7 Money for research careers`,right:"Education, not investment advice"}),(0,a.jsx)("p",{className:"emp-kind",children:"Overview"}),(0,a.jsx)("h1",{className:"emp-h1",children:"Personal finance for people who write methods sections"}),(0,a.jsxs)("p",{className:"emp-deck",children:["Stipends, soft money, a 403(b) with its own vendor history, and often a jump to industry pay. We explain the arithmetic, print our assumptions, and match you with a licensed financial advisor who specializes in ",l,"."]}),(0,a.jsxs)("div",{className:"emp-head-cta",children:[(0,a.jsx)("a",{href:"#advisor",className:"emp-btn emp-btn--lg",children:"Get matched with an advisor"}),(0,a.jsx)("a",{href:"#figure-1",className:"emp-textlink",children:"Or run Figure 1 first"})]})]}),(0,a.jsxs)("div",{className:"emp-paper-grid",children:[(0,a.jsx)(E,{items:ei}),(0,a.jsxs)("div",{className:"emp-paper-body",children:[(0,a.jsxs)("section",{id:"abstract","aria-labelledby":"abstract-h",className:"emp-abstract",children:[(0,a.jsx)("h2",{id:"abstract-h",className:"emp-abstract-h",children:"Abstract"}),(0,a.jsx)("p",{children:"Research careers pay in an unusual shape: years on a stipend or a grant-funded salary, a retirement plan with its own rules, and often a step up to industry pay. This page sets out how we match you with a licensed financial advisor who knows that shape (Section 2), shows a model of what the postdoc years do to savings (Section 3, Figure 1), notes what the model leaves out (Section 4), and ends with the request form (Section 5)."}),(0,a.jsxs)("p",{className:"emp-keywords",children:[(0,a.jsx)("span",{className:"emp-label",children:"Keywords"})," postdoc stipend; soft money; 403(b); industry transition; advisor match"]})]}),(0,a.jsxs)(L,{id:"introduction",no:"1",title:"Introduction",children:[(0,a.jsx)(I,{note:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"emp-label",children:"Note 1 · Stipend or wage?"}),(0,a.jsxs)("p",{children:["The tax treatment differs. IRS Publication 970 explains when fellowship and stipend payments are taxable",(0,a.jsx)(et,{n:2}),". Tax is often not withheld from a fellowship stipend, so many re
21370cipients pay estimated tax during the year."]})]}),children:(0,a.jsx)("p",{className:"emp-p emp-p--first",children:"Research careers pay in an unusual shape. Graduate school and the postdoc years often run on a stipend or on salary paid from grants, and many researchers then move to a faculty post, a national lab or an industry job where pay can step up sharply. Standard advice assumes a steady salary that rises a little each year. That does not fit a career with a step in it."})}),(0,a.jsxs)(I,{children:[(0,a.jsxs)("p",{className:"emp-p",children:["The questions that follow are practical. How large a cushion do you need when part of your pay depends on a renewal? What does one more postdoc year cost in savings? Which 403(b) vendor should you pick, and what happens to the balance when you change universities? Our"," ",(0,a.jsx)(i.default,{href:x(e,"/blog"),className:"emp-a",children:"articles"})," ","take these one at a time, and every"," ",(0,a.jsx)(i.default,{href:x(e,"/tools"),className:"emp-a",children:"figure"})," ","on this site prints its formulas."]}),(0,a.jsx)("p",{className:"emp-p",children:"When you want someone to look at your own numbers, we find you a licensed financial advisor who works with researchers. Section 2 describes how; Section 3 shows the model."})]})]}),(0,a.jsx)(L,{id:"methods",no:"2",title:"Methods: how the match works",children:(0,a.jsxs)(I,{note:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"emp-label",children:"Note 2 · How this is funded"}),(0,a.jsx)("p",{children:"Licensed financial advisors join our network to receive introductions and may pay us for them. We do not recommend or endorse any advisor."})]}),children:[(0,a.jsx)("p",{className:"emp-p",children:"The procedure has three steps. Asking is not a commitment."}),(0,a.jsxs)("ol",{className:"emp-proc",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("p",{className:"emp-proc-t",children:"Answer a few questions."}),(0,a.jsx)("p",{children:"Where you live, your role, what you need help with, ranges for income and assets, and how to reach you."})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("p",{className:"emp-proc-t",children:"We review your answers and contact you to confirm what you need."}),(0,a.jsx)("p",{children:"By phone or email, whichever you prefer."})]}),(0,a.jsxs)("li",{children:[(0,a.jsxs)("p",{className:"emp-proc-t",children:["We match you with a licensed financial advisor who specializes in ",l,"."]}),(0,a.jsx)("p",{children:"You decide whether to go ahead. Advice, fees and agreements are between you and the advisor."})]})]})]})}),(0,a.jsxs)(L,{id:"results",no:"3",title:"Results: the postdoc years and savings",wide:!0,children:[(0,a.jsx)(I,{note:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"emp-label",children:"Note 3 · Check the source"}),(0,a.jsxs)("p",{children:["The defaults are illustrative, not survey figures. Use your own offer letter. For NIH training awards, stipend levels are published each fiscal year",(0,a.jsx)(et,{n:1}),"."]})]}),children:(0,a.jsx)("p",{className:"emp-p",children:"Figure 1 follows one common path: a postdoc stipend for a few years, then an industry salary. Change the inputs to match yours. The band shows how far the answer moves when every assumption is a little worse, or a little better, at the same time."})}),(0,a.jsx)(Z,{}),(0,a.jsx)(I,{children:(0,a.jsxs)("p",{className:"emp-p",children:["Two things usually stand out. The year you move matters, because each extra year on the lower income is a year the higher income has not started compounding. And the savings rate multiplies everything else. The"," ",(0,a.jsx)(i.default,{href:x(e,"/tools#figure-1"),className:"emp-a",children:"full version of Figure 1"})," ","ranks each assumption by how much it moves the result on its own. Line colours come from the Okabe-Ito set, chosen to stay distinct for colour-blind readers",(0,a.jsx)(et,{n:4}),", and each line also has its own dash pattern."]})})]}),(0,a.jsxs)(L,{id:"discussion",no:"4",title:"Discussion",children:[(0,a.jsxs)(I,{note:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"emp-label",children:"Note 4 · Plan limits"}),(0,a.jsxs)("p",{children:["A 403(b) is the university counterpart of a 401(k). The IRS limit on employee deferrals was $23,500 for 2025",(0,a.jsx)(et,{n:3}),". It changes most years, so check the current figure at irs.gov."]})]}),children:[(0,a.jsx)("p",{className:"emp-p",children:"The model is deliberately small. It leaves out tax, which differs between a stipend and a wage; an employer’s retirement contribution and its vesting schedule; student loan payments; equity in an industry offer; a gap between jobs; and the cost of moving. Each of these can change the answer more than the band does."}),(0,a.jsxs)("p",{className:"emp-p",children:["Those are the parts where a person who knows research careers is worth talking to."," ",(0,a.jsx)("button",{type:"button",className:"emp-a emp-a--btn",onClick:()=>c(g.industry),children:"Ask to be matched about a move to industry"}),"."]})]}),(0,a.jsxs)("h3",{className:"emp-h3",children:[(0,a.jsx)("span",{className:"emp-secno",children:"4.1"})," Further reading"]}),(0,a.jsx)("ol",{className:"emp-reflist emp-reflist--reading",children:h.map(t=>(0,a.jsxs)("li",{children:[(0,a.jsx)(i.default,{href:x(e,`/blog/${t.slug}`),className:"emp-ref-title",children:t.title}),(0,a.jsxs)("span",{className:"emp-ref-meta emp-ref-meta--line",children:[t.pillar," · ",4," min read"]})]},t.slug))}),(0,a.jsx)("p",{className:"emp-more",children:(0,a.jsx)(i.default,{href:x(e,"/blog"),className:"emp-a",children:"All ten articles"})}),(0,a.jsxs)("h3",{className:"emp-h3",children:[(0,a.jsx)("span",{className:"emp-secno",children:"4.2"})," Figures you can run"]}),(0,a.jsxs)("ul",{className:"emp-figlist",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)(i.default,{href:x(e,"/tools#figure-1"),className:"emp-a",children:"Figure 1. Stipend path into industry pay"}),(0,a.jsx)("span",{children:" with a one-at-a-time sensitivity chart."})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)(i.default,{href:x(e,"/tools#figure-2"),className:"emp-a",children:"Figure 2. Buffer for a funding gap"}),(0,a.jsx)("span",{children:" when part of your salary is paid by grants."})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)(i.default,{href:x(e,"/tools#figure-3"),className:"emp-a",children:"Figure 3. The cost of a late start"}),(0,a.jsx)("span",{children:" on retirement saving."})]})]})]}),(0,a.jsx)($,{block:s,no:"5",title:"Get matched",siteKey:"scientistfinancialadvisor.com",siteName:o,pageSlug:"/",pageTitle:o,topic:r,steps:!1}
21370),(0,a.jsxs)("section",{id:"references","aria-labelledby":"references-h",className:"emp-sec emp-sec--refs",children:[(0,a.jsx)("h2",{id:"references-h",className:"emp-h2",children:"References"}),(0,a.jsxs)("ol",{className:"emp-reflist",children:[(0,a.jsxs)("li",{id:"ref-1",children:["National Institutes of Health. Ruth L. Kirschstein National Research Service Award (NRSA) stipend levels. Published for each fiscal year in the ",(0,a.jsx)("i",{children:"NIH Guide for Grants and Contracts"}),"."]}),(0,a.jsxs)("li",{id:"ref-2",children:["Internal Revenue Service. ",(0,a.jsx)("i",{children:"Publication 970, Tax Benefits for Education"}),", chapter on scholarships, fellowship grants and grants. Revised each year."," ",(0,a.jsx)("a",{href:"https://www.irs.gov/publications/p970",className:"emp-a",rel:"noopener noreferrer",children:"irs.gov/publications/p970"})]}),(0,a.jsx)("li",{id:"ref-3",children:"Internal Revenue Service (2024). Announcement of 2025 retirement plan limits: $23,500 for employee deferrals to 401(k), 403(b) and most 457 plans."}),(0,a.jsxs)("li",{id:"ref-4",children:["Okabe, M. and Ito, K. (2008). ",(0,a.jsx)("i",{children:"Color Universal Design (CUD): how to make figures and presentations that are friendly to colorblind people."})," The source of the figure colours on this site."]})]}),(0,a.jsx)(B,{onAsk:()=>c(g.review)})]})]})]})]})}),(0,a.jsx)(T,{siteBasePath:e}),(0,a.jsx)(P,{siteBasePath:e,currentSlug:"/"})]})}let en=(e,a)=>/^https?:|^#|^mailto:/.test(a)?a:e.href(a);function eo({running:e,kind:i,title:t,deck:s,abstract:r,highlights:n,meta:o,children:l}){return(0,a.jsxs)("header",{className:"emp-paper-head",children:[(0,a.jsx)(F,{left:e,right:"Education, not investment advice"}),i?(0,a.jsx)("p",{className:"emp-kind",children:i}):null,(0,a.jsx)("h1",{className:"emp-h1 emp-h1--page",children:t}),s?(0,a.jsx)("p",{className:"emp-deck",children:s}):null,o?(0,a.jsx)("p",{className:"emp-meta",children:o}):null,l,r||n?.length?(0,a.jsxs)("div",{className:"emp-abstract emp-abstract--head",children:[r?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"emp-abstract-h",children:"Abstract"}),(0,a.jsx)("p",{children:r})]}):null,n?.length?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"emp-abstract-h emp-abstract-h--sub",children:"Highlights"}),(0,a.jsx)("ul",{className:"emp-bullets",children:n.map(e=>(0,a.jsx)("li",{children:e},e))})]}):null]}):null]})}function el({head:e,toc:i,children:t}){return(0,a.jsxs)("article",{className:"emp-paper",children:[e,(0,a.jsxs)("div",{className:`emp-paper-grid${i.length<2?" emp-paper-grid--notoc":""}`,children:[(0,a.jsx)(E,{items:i}),(0,a.jsx)("div",{className:"emp-paper-body",children:t})]})]})}function ec({block:e,no:t,id:s,ctx:r}){switch(e.type){case"story":{let i=/how it works/i.test(e.eyebrow);return(0,a.jsx)(L,{id:s,no:t,title:e.title,children:(0,a.jsxs)(I,{children:[(0,a.jsx)("p",{className:"emp-p emp-p--first",children:e.body}),e.highlights?.length?i?(0,a.jsx)("ol",{className:"emp-proc emp-proc--tight",children:e.highlights.map(e=>(0,a.jsx)("li",{children:e},e))}):(0,a.jsx)("ul",{className:"emp-bullets",children:e.highlights.map(e=>(0,a.jsx)("li",{children:e},e))}):null]})})}case"split-panel":return(0,a.jsxs)(L,{id:s,no:t,title:e.title,children:[e.body?(0,a.jsx)(I,{children:(0,a.jsx)("p",{className:"emp-p emp-p--first",children:e.body})}):null,e.panels.map((e,i)=>(0,a.jsxs)(I,{children:[(0,a.jsxs)("h3",{className:"emp-h3",children:[(0,a.jsxs)("span",{className:"emp-secno",children:[t,".",i+1]})," ",e.heading]}),(0,a.jsx)("p",{className:"emp-p",children:e.body})]},e.heading))]});case"faq":return(0,a.jsx)(L,{id:s,no:t,title:e.title,children:e.items.map((e,i)=>(0,a.jsxs)(I,{children:[(0,a.jsxs)("h3",{className:"emp-h3",children:[(0,a.jsxs)("span",{className:"emp-secno",children:[t,".",i+1]})," ",e.question]}),(0,a.jsx)("p",{className:"emp-p",children:e.answer})]},e.question))});case"services":return(0,a.jsx)(L,{id:s,no:t,title:e.title,children:(0,a.jsxs)(I,{children:[e.body?(0,a.jsx)("p",{className:"emp-p emp-p--first",children:e.body}):null,(0,a.jsx)("dl",{className:"emp-dl",children:e.items.map(e=>(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:e.title}),(0,a.jsx)("dd",{children:e.description})]},e.title))})]})});case"team":return(0,a.jsx)(L,{id:s,no:t,title:e.title,children:(0,a.jsx)(I,{children:(0,a.jsx)("dl",{className:"emp-dl",children:e.people.map(e=>(0,a.jsxs)("div",{children:[(0,a.jsxs)("dt",{children:[e.name,", ",e.role]}),(0,a.jsx)("dd",{children:e.bio})]},e.name))})})});case"blog-feed":return(0,a.jsx)(L,{id:s,no:t,title:e.title,children:(0,a.jsxs)(I,{children:[e.body?(0,a.jsx)("p",{className:"emp-p emp-p--first",children:e.body}):null,(0,a.jsx)("ol",{className:"emp-reflist emp-reflist--reading",children:e.posts.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)(i.default,{href:en(r,e.href.replace(/^https?:\/\/[^/]+/,"")),className:"emp-ref-title",children:e.title}),(0,a.jsxs)("span",{className:"emp-ref-meta",children:[" ",e.excerpt]})]},e.href))})]})});case"cta-band":return(0,a.jsx)(L,{id:s,no:t,title:e.title,children:(0,a.jsxs)(I,{children:[(0,a.jsx)("p",{className:"emp-p emp-p--first",children:e.body}),(0,a.jsxs)("p",{className:"emp-actions",children:[(0,a.jsx)(i.default,{href:en(r,e.primaryCta.href),className:"emp-btn",children:e.primaryCta.label}),e.secondaryCta?(0,a.jsx)(i.default,{href:en(r,e.secondaryCta.href),className:"emp-textlink",children:e.secondaryCta.label}):null]})]})});case"html-content":return(0,a.jsx)(L,{id:s,no:t,title:"Text",children:(0,a.jsx)("div",{className:"emp-prose",dangerouslySetInnerHTML:{__html:e.html}})});case"lead-form":return(0,a.jsx)($,{block:e,no:t,siteKey:r.siteKey,siteName:r.siteName,pageSlug:r.page.slug,pageTitle:r.page.title,topic:r.topic,steps:!1!==r.steps});default:if(!e.title&&!e.body)return null;return(0,a.jsx)(L,{id:s,no:t,title:e.title??"",children:e.body?(0,a.jsx)(I,{children:(0,a.jsx)("p",{className:"emp-p emp-p--first",children:e.body})}):null})}}function ed(e,a){return"lead-form"===e.type?e.fields.some(e=>
21370"crd_number"===e.name)?"apply":"advisor":`sec-${a+1}`}function eh({ctx:e}){let{page:t}=e,s=t.blocks.filter(e=>"finance-calculator"!==e.type),r=s.find(e=>"hero"===e.type),n=r?void 0:s.find(e=>"story"===e.type),l=s.filter(e=>e!==r&&e!==n),c=l.some(e=>"story"===e.type&&/how it works/i.test(e.eyebrow)),d={...e,steps:!c},h=l.map((e,a)=>({id:ed(e,a),label:"lead-form"===e.type?e.title:e.title??"",no:String(a+1)})),m=r?(0,a.jsx)(eo,{running:`${o} \xb7 ${t.title}`,kind:r.eyebrow,title:r.title,deck:r.body,children:r.primaryCta||r.secondaryCta?(0,a.jsxs)("div",{className:"emp-head-cta",children:[r.primaryCta?(0,a.jsx)(i.default,{href:en(e,r.primaryCta.href),className:"emp-btn",children:r.primaryCta.label}):null,r.secondaryCta?(0,a.jsx)(i.default,{href:en(e,r.secondaryCta.href),className:"emp-textlink",children:r.secondaryCta.label}):null]}):null}):(0,a.jsx)(eo,{running:`${o} \xb7 ${t.title}`,kind:n?.eyebrow,title:n?.title??t.title,abstract:n?.body??t.summary,highlights:n?.highlights});return(0,a.jsx)(el,{head:m,toc:h,children:l.map((e,i)=>(0,a.jsx)(ec,{block:e,no:String(i+1),id:ed(e,i),ctx:d},`${e.type}-${i}`))})}function em({ctx:e}){let{page:t}=e,s=t.blocks,r=s.find(e=>"hero"===e.type),n=s.find(e=>"html-content"===e.type),c=s.find(e=>"faq"===e.type),m=s.find(e=>"lead-form"===e.type),p=t.slug.replace(/^\/blog\//,""),v=h(p),f=u[p]??g.review,x=b[p],y=0,w=[],_=n.html.replace(/<h2>([\s\S]*?)<\/h2>/g,(e,a)=>{y+=1;let i=`s${y}`;return w.push({id:i,label:a.replace(/<[^>]+>/g,"").trim(),no:String(y)}),`<h2 id="${i}"><span class="emp-secno">${y}</span> ${a}</h2>`});c&&w.push({id:"notes",label:"Notes"}),w.push({id:"further",label:"Further reading"}),m&&w.push({id:"advisor",label:"Get matched"});let k=d.filter(e=>e.slug!==p).sort((e,a)=>Number(a.area===v?.area)-Number(e.area===v?.area)).slice(0,4),j=(0,a.jsx)(eo,{running:`${o} \xb7 Articles \xb7 ${r?.eyebrow??v?.pillar??""}`,kind:`Article \xb7 ${r?.eyebrow??v?.pillar??""}`,title:t.title,abstract:r?.body??t.summary,meta:"4 min read",children:(0,a.jsx)("p",{className:"emp-crumb",children:(0,a.jsx)(i.default,{href:e.href("/blog"),className:"emp-a",children:"All articles"})})});return(0,a.jsxs)(el,{head:j,toc:w,children:[(0,a.jsxs)("div",{className:"emp-row emp-row--article",children:[(0,a.jsx)("div",{className:"emp-row-main",children:(0,a.jsx)("div",{className:"emp-prose",dangerouslySetInnerHTML:{__html:_}})}),(0,a.jsxs)("div",{className:"emp-mnote emp-mnote--sticky",role:"note",children:[(0,a.jsx)("p",{className:"emp-label",children:"Correspondence"}),(0,a.jsxs)("p",{children:["Want this applied to your numbers? We match you with a licensed financial advisor who specializes in ",l,"."]}),(0,a.jsx)("button",{type:"button",className:"emp-btn emp-btn--sm",onClick:()=>e.ask(f),children:"Get matched"}),x?(0,a.jsxs)("p",{className:"emp-mnote-fig",children:["Related figure:"," ",(0,a.jsx)(i.default,{href:e.href(x.to),className:"emp-a",children:x.label})]}):null]})]}),c?(0,a.jsxs)("section",{id:"notes","aria-labelledby":"notes-h",className:"emp-sec",children:[(0,a.jsx)("h2",{id:"notes-h",className:"emp-h2",children:"Notes"}),(0,a.jsx)("ol",{className:"emp-notes",children:c.items.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("p",{className:"emp-notes-q",children:e.question}),(0,a.jsx)("p",{children:e.answer})]},e.question))})]}):null,(0,a.jsxs)("section",{id:"further","aria-labelledby":"further-h",className:"emp-sec",children:[(0,a.jsx)("h2",{id:"further-h",className:"emp-h2",children:"Further reading"}),(0,a.jsx)("ol",{className:"emp-reflist emp-reflist--reading",children:k.map(t=>(0,a.jsxs)("li",{children:[(0,a.jsx)(i.default,{href:e.href(`/blog/${t.slug}`),className:"emp-ref-title",children:t.title}),(0,a.jsxs)("span",{className:"emp-ref-meta emp-ref-meta--line",children:[t.pillar," · ",4," min read"]})]},t.slug))})]}),m?(0,a.jsx)($,{block:m,title:"Get matched",siteKey:e.siteKey,siteName:e.siteName,pageSlug:t.slug,pageTitle:t.title,topic:e.topic}):(0,a.jsx)(B,{href:e.href("/contact")})]})}function ep({ctx:e}){let{page:t}=e,s=t.blocks,r=s.find(e=>"hero"===e.type),n=s.find(e=>"blog-feed"===e.type),l=s.find(e=>"lead-form"===e.type),d=(n?.posts??[]).map(e=>{let a=e.href.replace(/^https?:\/\/[^/]+/,"").replace(/^\/blog\//,"");return{...e,slug:a,area:h(a)?.area}}),m=c.map(e=>({...e,posts:d.filter(a=>a.area===e.id)}
21370)).filter(e=>e.posts.length),p=d.filter(e=>!e.area),g=m.map((e,a)=>({id:`pillar-${e.id}`,label:e.name,no:String(a+1)}));l&&g.push({id:"advisor",label:"Get matched",no:String(m.length+1)});let v=0;return(0,a.jsxs)(el,{toc:g,head:(0,a.jsx)(eo,{running:`${o} \xb7 Articles`,kind:"Contents",title:"Articles",deck:r?.body??t.summary,meta:`${d.length} articles, about 4 minutes each. Grouped by subject.`}),children:[m.map((t,s)=>(0,a.jsx)(L,{id:`pillar-${t.id}`,no:String(s+1),title:t.name,children:(0,a.jsxs)(I,{note:t.figure?(0,a.jsxs)("p",{children:["Pairs with"," ",(0,a.jsx)(i.default,{href:e.href(t.figure.to),className:"emp-a",children:t.figure.label}),"."]}):void 0,children:[(0,a.jsx)("p",{className:"emp-p emp-p--first",children:t.blurb}),(0,a.jsx)("ol",{className:"emp-reflist emp-reflist--papers",children:t.posts.map(t=>(v+=1,(0,a.jsxs)("li",{style:{counterSet:`emp-ref ${v}`},children:[(0,a.jsx)(i.default,{href:e.href(`/blog/${t.slug}`),className:"emp-ref-title",children:t.title}),(0,a.jsxs)("span",{className:"emp-ref-meta",children:[" ",t.excerpt]}),(0,a.jsxs)("span",{className:"emp-ref-foot",children:[" ",4," min read."]})]},t.slug)))})]})},t.id)),p.length?(0,a.jsx)("ol",{className:"emp-reflist",children:p.map(t=>(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:en(e,t.href),className:"emp-ref-title",children:t.title})},t.href))}):null,l?(0,a.jsx)($,{block:l,no:String(m.length+1),title:"Get matched",siteKey:e.siteKey,siteName:e.siteName,pageSlug:t.slug,pageTitle:t.title,topic:e.topic}):null]})}function eg({ctx:e}){let{page:t}=e,s=t.blocks.find(e=>"lead-form"===e.type),r=[{id:"fig-sec-1",label:"Stipend path into industry pay",no:"1"},{id:"fig-sec-2",label:"Buffer for a funding gap",no:"2"},{id:"fig-sec-3",label:"The cost of a late start",no:"3"}];s&&r.push({id:"advisor",label:"Get matched",no:"4"});let n=(t,s)=>(0,a.jsx)(i.default,{href:e.href(`/blog/${t}`),className:"emp-a",children:s});return(0,a.jsxs)(el,{toc:r,head:(0,a.jsx)(eo,{running:`${o} \xb7 Figures`,kind:"Figures",title:"Three models you can run",deck:"Each figure recomputes as you type. The formulas are printed under it, the defaults are illustrative, and what you enter stays in your browser."}),children:[(0,a.jsxs)(L,{id:"fig-sec-1",no:"1",title:"Stipend path into industry pay",wide:!0,children:[(0,a.jsx)(I,{note:(0,a.jsxs)("p",{children:["Read with: ",n("academia-to-industry-compensation-comparison","Comparing Academic and Industry Compensation for Scientists"),"."]}
21370),children:(0,a.jsx)("p",{className:"emp-p emp-p--first",children:"How much does the length of a postdoc change what you have saved fifteen years later? Set the stipend, the raise, the number of years and the industry salary. The band moves every assumption at once; panel b moves them one at a time."})}),(0,a.jsx)(Z,{full:!0}),(0,a.jsx)(B,{onAsk:()=>e.ask(g.industry),label:"Talk to an advisor about a move"})]}),(0,a.jsxs)(L,{id:"fig-sec-2",no:"2",title:"Buffer for a funding gap",wide:!0,children:[(0,a.jsx)(I,{note:(0,a.jsxs)("p",{children:["Read with: ",n("grant-funded-salary-soft-money-planning","Financial Planning on Grant-Funded Salary and Soft-Money Positions"),"."]}),children:(0,a.jsx)("p",{className:"emp-p emp-p--first",children:"When part of your salary is paid from grants, a gap between awards is a known risk with an unknown date. This sizes a cash buffer from the share of pay at risk, the bridge funding your institution offers and the gap you plan for."})}),(0,a.jsx)(Q,{}),(0,a.jsx)(B,{onAsk:()=>e.ask(g.postdoc),label:"Talk to an advisor about grant-funded pay"})]}),(0,a.jsxs)(L,{id:"fig-sec-3",no:"3",title:"The cost of a late start",wide:!0,children:[(0,a.jsx)(I,{note:(0,a.jsxs)("p",{children:["Read with: ",n("403b-tiaa-retirement-basics-university-employees","403(b) and TIAA Retirement Basics for University Employees"),"."]}),children:(0,a.jsx)("p",{className:"emp-p emp-p--first",children:"Stipend years often come without access to a retirement plan. This compares the same yearly contribution started today and started after a delay, both ending on the same date."})}),(0,a.jsx)(ea,{}),(0,a.jsx)(B,{onAsk:()=>e.ask(g.retirement),label:"Talk to an advisor about retirement plans"})]}),s?(0,a.jsx)($,{block:s,no:"4",title:"Get matched",siteKey:e.siteKey,siteName:e.siteName,pageSlug:t.slug,pageTitle:t.title,topic:e.topic}):null]})}function ev({ctx:e}){let{page:t}=e,s=t.blocks,h=s.find(e=>"services"===e.type),m=s.find(e=>"lead-form"===e.type),p=(0,r.advisorNiche)(n).topics.filter(e=>"Something else"!==e),g=c.map((e,a)=>({id:`cov-${e.id}`,label:e.name,no:String(a+1)}));return g.push({id:"cov-advisor",label:"What an advisor can help with",no:String(c.length+1)}),m&&g.push({id:"advisor",label:"Get matched",no:String(c.length+2)}),(0,a.jsxs)(el,{toc:g,head:(0,a.jsx)(eo,{running:`${o} \xb7 Coverage`,kind:h?.eyebrow??"Coverage",title:t.title,deck:h?.body??t.summary}),children:[c.map((t,s)=>(0,a.jsx)(L,{id:`cov-${t.id}`,no:String(s+1),title:t.name,children:(0,a.jsxs)(I,{note:t.figure?(0,a.jsxs)("p",{children:["Model:"," ",(0,a.jsx)(i.default,{href:e.href(t.figure.to),className:"emp-a",children:t.figure.label})]}):void 0,children:[(0,a.jsx)("p",{className:"emp-p emp-p--first",children:t.blurb}),(0,a.jsx)("ul",{className:"emp-bullets emp-bullets--links",children:d.filter(e=>e.area===t.id).map(t=>(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:e.href(`/blog/${t.slug}`),className:"emp-a",children:t.title})},t.slug))}),(0,a.jsx)("p",{className:"emp-p",children:(0,a.jsxs)("button",{type:"button",className:"emp-a emp-a--btn",onClick:()=>e.ask(v[t.id]),children:["Talk to an advisor about ",t.name.toLowerCase()]})})]})},t.id)),(0,a.jsx)(L,{id:"cov-advisor",no:String(c.length+1),title:"What an advisor can help with",children:(0,a.jsxs)(I,{children:[(0,a.jsxs)("p",{className:"emp-p emp-p--first",children:["These are the subjects you can choose in the request form. We match you with a licensed financial advisor who specializes in ",l,"."]}),(0,a.jsx)("ul",{className:"emp-bullets",children:p.map(i=>(0,a.jsx)("li",{children:(0,a.jsx)("button",{type:"button",className:"emp-a emp-a--btn",onClick:()=>e.ask(i),children:i})},i))})]})}),m?(0,a.jsx)($,{block:m,no:String(c.length+2),title:"Get matched",siteKey:e.siteKey,siteName:e.siteName,pageSlug:t.slug,pageTitle:t.title,topic:e.topic}):null]})}function eu({page:e,siteBasePath:i,siteKey:s,siteName:r,after:n}){let o,[l,c]=(0,t.useState)(""),d={siteBasePath:i,siteKey:s,siteName:r,page:e,topic:l,ask:e=>{c(e),_()},href:e=>x(i,e)},h=e.blocks;o=e.slug.startsWith("/blog/")&&h.some(e=>"html-content"===e.type)?(0,a.jsx)(em,{ctx:d}):"/blog"===e.slug?(0,a.jsx)(ep,{ctx:d}):"/tools"===e.slug?(0,a.jsx)(eg,{ctx:d}):"/services"===e.slug?(0,a.jsx)(ev,{ctx:d}):(0,a.jsx)(eh,{ctx:d});let m=h.some(e=>"lead-form"===e.type)||"/tools"===e.slug;return(0,a.jsxs)(C,{children:[(0,a.jsx)(M,{siteBasePath:i,currentSlug:e.slug}
21370),(0,a.jsxs)("main",{id:"main-content",tabIndex:-1,className:"emp-main",children:[o,m?null:(0,a.jsx)("div",{className:"emp-paper emp-paper--tail",children:(0,a.jsx)(B,{href:d.href("/contact")})}),n?(0,a.jsx)("div",{className:"emp-paper emp-after",children:n}):null]}),(0,a.jsx)(T,{siteBasePath:i}),(0,a.jsx)(P,{siteBasePath:i,currentSlug:e.slug})]})}e.s(["ContentPage",0,function(e){return(0,a.jsx)(eu,{page:e.page,siteBasePath:e.siteBasePath,siteKey:e.siteKey,siteName:e.siteName,after:e.after})},"HomePage",0,function(e){return(0,a.jsx)(er,{siteBasePath:e.siteBasePath,advisorBlock:e.advisorBlock})}],846096)},333137,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645),s=e.i(525320),r=e.i(600951);let n="engineerfinancial.com",o="Stratum Finance",l=(0,s.advisorNiche)(n).specialty,c=[{slug:"rsu-vesting-tax-withholding-shortfalls",title:"RSU Vesting and the Tax-Withholding Shortfall Nobody Warns You About",pillar:"Equity comp",read:4,excerpt:"Your company withholds shares at a flat supplemental rate on every RSU vest. For most engineers in mid-to-high tax brackets, that rate is not enough — and the gap shows up as a surprise bill."},{slug:"iso-vs-nso-stock-option-basics",title:"ISO vs. NSO: Stock Option Basics Every Engineer Should Model",pillar:"Equity comp",read:4,excerpt:"Two option types, two different tax triggers, two different risk profiles at exercise. The type printed on your grant agreement changes the entire decision tree."},{slug:"amt-planning-startup-equity",title:"AMT Planning for Startup Equity: A Systems View",pillar:"Tax literacy",read:4,excerpt:"The alternative minimum tax behaves like a second tax system running in parallel to your normal return. For engineers exercising ISOs at a startup, understanding both systems is not optional."},{slug:"mega-backdoor-roth-401k-mechanics",title:"Mega Backdoor Roth 401(k) Mechanics, Step by Step",pillar:"Investing",read:4,excerpt:"The standard 401(k) limit and the total plan limit are two different numbers. The gap between them, if your plan allows after-tax contributions and in-plan conversions, is the mega backdoor Roth."},{slug:"comparing-faang-style-benefits-packages",title:"Comparing FAANG-Style Benefits Packages Beyond the Headline Number",pillar:"Equity comp",read:4,excerpt:"Two offers with identical base salary and similar equity grants can differ by tens of thousands of dollars a year once 401(k) match structure, HSA contributions, and vesting cliffs are modeled properly."},{slug:"negotiating-equity-refreshers",title:"Negotiating Equity Refreshers: What Actually Moves the Number",pillar:"Equity comp",read:4,excerpt:"Refresher grants are not automatic, and the process that determines their size is more mechanical — and more influenceable — than most engineers assume."},{slug:"83b-elections-early-stage-equity",title:"83(b) Elections for Early-Stage Equity: The Window You Can't Reopen",pillar:"Equity comp",read:4,excerpt:"You have 30 days from grant to file an 83(b) election. Miss it, and a decision that could have been nearly costless becomes permanently more expensive."},{slug:"engineer-to-manager-compensation-transition",title:"Engineer-to-Manager Compensation Transition Planning",pillar:"Career stages",read:4,excerpt:"Moving from IC to manager changes your equity refresh cadence, your bonus structure, and sometimes your leveling entirely — often before your paycheck reflects any of it."},{slug:"geographic-arbitrage-remote-work-tax-residency",title:"Geographic Arbitrage and Remote-Work Tax Residency Basics",pillar:"Tax literacy",read:4,excerpt:"Moving to a lower-cost-of-living or no-income-tax state as a remote engineer sounds simple. The tax-residency mechanics of actually making the move stick are not."},{slug:"target-date-funds-vs-self-directed-401k-tech",title:"Target-Date Funds vs. Self-Directed 401(k) Allocation for Tech-Industry Risk Profiles",pillar:"FI paths",read:4,excerpt:"A target-date fund assumes your only risk exposure is the stock market. An engineer with a large RSU position at the same employer as their paycheck has a second, correlated risk that default glide paths ignore."}];function d(e){return c.find(a=>a.slug===e)}let h="RSUs, stock options or ESPP",m="Alternative minimum tax on option exercises",p="Too much of my wealth in employer stock",g="Retirement accounts and mega backdoor Roth",v="A full portfolio and wealth review",u={"rsu-vesting-tax-withholding-shortfalls":h,"iso-vs-nso-stock-option-basics":h,"amt-planning-startup-equity":m,"mega-backdoor-roth-401k-mechanics":g,"comparing-faang-style-benefits-packages":h,"negotiating-equity-refreshers":h,"83b-elections-early-stage-equity":h,"engineer-to-manager-compensation-transition":v,"geographic-arbitrage-remote-work-tax-residency":v,"target-date-funds-vs-self-directed-401k-tech":p},b=[{id:"equity",name:"Equity compensation",blurb:"RSU vests and the withholding they trigger, option types, 83(b) timing, refreshers, and comparing offers.",slugs:["rsu-vesting-tax-withholding-shortfalls","iso-vs-nso-stock-option-basics","83b-elections-early-stage-equity","negotiating-equity-refreshers","comparing-faang-style-benefits-packages"],topic:h,tool:{label:"Vesting plotter",to:"/tools#plotter"}},{id:"tax",name:"Tax literacy",blurb:"The alternative minimum tax as a second system running beside your normal return, and what a move between states does.",slugs:["amt-planning-startup-equity","geographic-arbitrage-remote-work-tax-residency"],topic:m},{id:"invest",name:"Accounts and allocation",blurb:"The mega backdoor Roth, and why a paycheck and a stock grant from the same employer are one risk, not tw
21370o.",slugs:["mega-backdoor-roth-401k-mechanics","target-date-funds-vs-self-directed-401k-tech"],topic:g,tool:{label:"After-tax 401(k) headroom",to:"/tools#headroom"}},{id:"career",name:"Career changes",blurb:"What moves when you go from individual contributor to manager: refresh cadence, bonus structure, level.",slugs:["engineer-to-manager-compensation-transition"],topic:v}],f=[{no:"A-000",slug:"/",label:"Cover"},{no:"A-100",slug:"/blog",label:"Guides"},{no:"A-200",slug:"/tools",label:"Vesting plotter and tools"},{no:"A-300",slug:"/services",label:"Coverage"},{no:"A-400",slug:"/about",label:"About"},{no:"A-500",slug:"/contact",label:"Find an advisor"},{no:"A-600",slug:"/advisors",label:"For advisors"}],x=[{no:"G-001",slug:"/editorial-policy",label:"Editorial policy"},{no:"G-002",slug:"/editorial-team",label:"About the desk"},{no:"G-003",slug:"/privacy",label:"Privacy"},{no:"G-004",slug:"/terms",label:"Terms"},{no:"G-005",slug:"/disclaimer",label:"Disclaimer"},{no:"G-006",slug:"/do-not-sell",label:"Do not sell or share"}];function y(e){let a=[...f,...x].find(a=>a.slug===e);if(a)return a.no;if(e.startsWith("/blog/")){let a=c.findIndex(a=>`/blog/${a.slug}`===e);return a>=0?`A-1${String(a+1).padStart(2,"0")}`:"A-1XX"}return"/advisor"===e?"A-601":"X-000"}function w(e,a){let i="/"===e?"":e.replace(/\/$/,"");return"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}function _(){let e=document.getElementById("advisor");if(!e)return;let a=window.matchMedia("(prefers-reduced-motion: reduce)").matches;e.scrollIntoView({behavior:a?"auto":"smooth",block:"start"});let i=e.querySelector("[data-stf-form-top]");window.setTimeout(()=>i?.focus({preventScroll:!0}),450*!a)}let k=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:0}),j=new Intl.NumberFormat("en-US",{maximumFractionDigits:0});function N(e){return k.format(Math.round(e))}function S(e){return j.format(e)}function A(e){let a=Math.abs(e);return a>=1e6?`$${(e/1e6).toFixed(a>=1e7?1:2).replace(/\.?0+$/,"")}M`:a>=1e4?`$${Math.round(e/1e3)}k`:a>=1e3?`$${(e/1e3).toFixed(1).replace(/\.0$/,"")}k`:`$${Math.round(e)}`}function z(){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/engineer/fonts/barlowcond-700.woff2"}),(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/engineer/fonts/publicsans.woff2"})]})}function C({size:e=28}){return(0,a.jsxs)("svg",{width:e,height:e,viewBox:"0 0 28 28","aria-hidden":!0,className:"stf-mark",focusable:"false",children:[(0,a.jsx)("rect",{x:"3",y:"3",width:"22",height:"22",fill:"none",stroke:"currentColor",strokeWidth:"2"}),(0,a.jsx)("path",{d:"M3 13 13 3M3 21 21 3M7 25 25 7M15 25 25 15",stroke:"currentColor",strokeWidth:"1.3"}),(0,a.jsx)("path",{d:"M0 14h3M25 14h3",stroke:"var(--stf-red)",strokeWidth:"2"})]})}function M(e,a){return"/blog"===a?"/blog"===e||e.startsWith("/blog/"):e===a}function P({siteBasePath:e,currentSlug:t,toc:s,idPrefix:r}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"stf-index-h",id:`${r}-h`,children:"Drawing list"}),(0,a.jsx)("ol",{className:"stf-index","aria-labelledby":`${r}-h`,children:f.map(r=>{let n=M(t,r.slug);return(0,a.jsxs)("li",{children:[(0,a.jsxs)(i.default,{href:w(e,r.slug),className:"stf-index-link","aria-current":n?"page":void 0,children:[(0,a.jsx)("span",{className:"stf-index-no",children:r.no}),(0,a.jsx)("span",{className:"stf-index-t",children:r.label})]}),n&&s&&s.length?(0,a.jsx)("ol",{className:"stf-index-toc","aria-label":"On this sheet",children:s.map((e,i)=>(0,a.jsx)("li",{children:(0,a.jsxs)("a",{href:`#${e.id}`,children:[(0,a.jsx)("span",{className:"stf-index-no",children:`${i+1}.0`}),(0,a.jsx)("span",{children:e.text})]})},e.id))}):null]},r.slug)})}),(0,a.jsx)("p",{className:"stf-index-h stf-index-h--g",id:`${r}-g`,children:"General sheets"}),(0,a.jsx)("ol",{className:"stf-index stf-index--g","aria-labelledby":`${r}-g`,children:x.map(s=>(0,a.jsx)("li",{children:(0,a.jsxs)(i.default,{href:w(e,s.slug),className:"stf-index-link","aria-current":M(t,s.slug)?"page":void 0,children:[(0,a.jsx)("span",{className:"stf-index-no",children:s.no}),(0,a.jsx)("span",{className:"stf-index-t",children:s.label})]})},s.slug))})]})}function T({siteBasePath:e,currentSlug:t,title:s}){let{open:n,toggle:l}=(0,r.useMobileMenu)(),c="/"===t?"#advisor":w(e,"/contact");return(0,a.jsxs)("header",{className:"stf-top",children:[(0,a.jsxs)("div",{className:"stf-top-inner",children:[(0,a.jsxs)(i.default,{href:w(e,"/"),className:"stf-brand","aria-label":`${o}, home`,children:[(0,a.jsx)(C,{}),(0,a.jsxs)("span",{className:"stf-brand-name","aria-hidden":!0,
21370children:["Stratum",(0,a.jsx)("span",{children:" Finance"})]})]}),(0,a.jsxs)("p",{className:"stf-top-sheet","aria-hidden":!0,children:[(0,a.jsx)("span",{className:"stf-top-no",children:y(t)}),(0,a.jsx)("span",{className:"stf-top-title",children:s})]}),(0,a.jsxs)("div",{className:"stf-top-right",children:[(0,a.jsx)(i.default,{href:c,className:"stf-btn stf-btn--red stf-btn--sm",children:"Find an advisor"}),(0,a.jsxs)("button",{type:"button",className:"stf-menu-btn","aria-expanded":n,"aria-controls":"stf-menu",onClick:l,children:[(0,a.jsx)("span",{className:"stf-menu-glyph","aria-hidden":!0,"data-open":n?"1":"0"}),(0,a.jsx)("span",{className:"stf-menu-text",children:n?"Close":"Menu"})]})]})]}),(0,a.jsx)("nav",{id:"stf-menu",className:"stf-menu","aria-label":"Sheet index",hidden:!n,children:(0,a.jsx)(P,{siteBasePath:e,currentSlug:t,idPrefix:"stf-menu"})})]})}function E({siteBasePath:e,currentSlug:i,toc:t}){return(0,a.jsx)("nav",{className:"stf-rail","aria-label":"Drawing list",children:(0,a.jsx)("div",{className:"stf-rail-inner",children:(0,a.jsx)(P,{siteBasePath:e,currentSlug:i,toc:t,idPrefix:"stf-rail"})})})}function F(){return(0,a.jsx)("div",{className:"stf-zones","aria-hidden":!0,children:["8","7","6","5","4","3","2","1"].map(e=>(0,a.jsx)("span",{children:e},e))})}function L({siteBasePath:e,currentSlug:t,title:r,scale:n}){return(0,a.jsx)("footer",{className:"stf-foot",children:(0,a.jsxs)("div",{className:"stf-foot-inner",children:[(0,a.jsxs)("div",{className:"stf-tb",children:[(0,a.jsxs)("section",{className:"stf-tb-notes","aria-labelledby":"stf-notes-h",children:[(0,a.jsx)("h2",{id:"stf-notes-h",className:"stf-tb-h",children:"General notes"}),(0,a.jsxs)("ol",{children:[(0,a.jsxs)("li",{children:[o," is an educational publisher. It does not give personalized investment, tax or legal advice, recommend securities or manage money."]}),(0,a.jsx)("li",{children:"Asking to be matched creates no advisory relationship. Any relationship is between you and the licensed financial advisor you choose, under that advisor’s own agreement and disclosures."}),(0,a.jsx)("li",{children:s.ADVISOR_COMPENSATION_NOTE}),(0,a.jsx)("li",{children:"Charts and calculators are illustrations computed from stated formulas and your inputs. They are not forecasts, and they do not model the alternative minimum tax, state tax, Social Security or Medicare."}),(0,a.jsx)("li",{children:"Please do not send material nonpublic information about your employer."})]})]}),(0,a.jsxs)("dl",{className:"stf-tb-grid",children:[(0,a.jsxs)("div",{className:"stf-tb-cell stf-tb-cell--brand",children:[(0,a.jsx)("dt",{children:"Project"}),(0,a.jsxs)("dd",{children:[(0,a.jsx)(C,{size:22})," ",o]})]}),(0,a.jsxs)("div",{className:"stf-tb-cell stf-tb-cell--title",children:[(0,a.jsx)("dt",{children:"Title"}),(0,a.jsx)("dd",{children:r})]}),(0,a.jsxs)("div",{className:"stf-tb-cell",children:[(0,a.jsx)("dt",{children:"Sheet"}),(0,a.jsx)("dd",{className:"stf-mono",children:y(t)})]}),(0,a.jsxs)("div",{className:"stf-tb-cell",children:[(0,a.jsx)("dt",{children:"Scale"}),(0,a.jsx)("dd",{className:"stf-mono",children:n})]}),(0,a.jsxs)("div",{className:"stf-tb-cell",children:[(0,a.jsx)("dt",{children:"Rev"}),(0,a.jsx)("dd",{className:"stf-mono",children:"A"})]}),(0,a.jsxs)("div",{className:"stf-tb-cell stf-tb-cell--wide",children:[(0,a.jsx)("dt",{children:"Drawn by"}),(0,a.jsxs)("dd",{children:["The ",o," desk"]})]})]})]}),(0,a.jsxs)("nav",{className:"stf-foot-links","aria-label":"Footer",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"stf-tb-h",children:"Sheets"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:w(e,"/blog"),children:"Guides"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:w(e,"/tools"),children:"Vesting plotter and tools"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:w(e,"/services"),children:"Coverage"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:w(e,"/about"),children:"About"})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"stf-tb-h",children:"Contact"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:w(e,"/contact"),children:"Contact and find an advisor"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:w(e,"/advisors"),children:"For advisors"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:w(e,"/editorial-policy"),children:"Editorial policy"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:w(e,"/editorial-team"),children:"About the desk"})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"stf-tb-h",children:"Legal"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:w(e,"/privacy"),children:"Privacy"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:w(e,"/terms"),children:"Terms"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:w(e,"/disclaimer"),children:"Disclaimer"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:w(e,"/do-not-sell"),children:"Do not sell or share"})})]})]})]})]})})}function I({siteBasePath:e,currentSlug:t}){let s="/"===t?"#advisor":w(e,"/contact");return(0,a.jsx)("nav",{className:"stf-sticky","aria-label":"Quick action",children:(0,a.jsx)(i.default,{href:s,className:"stf-btn stf-btn--red",children:"Find an advisor"})})}function $({siteBasePath:e,currentSlug:i,title:t,scale:s="NTS",toc:r,children:n}){return(0,a.jsxs)("div",{className:"stf-root shell-stf",children:[(0,a.jsx)(z,{}),(0,a.jsx)("a",{className:"stf-skip",href:"#stf-main",children:"Skip to main content"}),(0,a.jsx)(T,{siteBasePath:e,currentSlug:i,title:t}),(0,a.jsxs)("div",{className:"stf-frame",children:[(0,a.jsx)(F,{}),(0,a.jsxs)("div",{className:"stf-frame-grid",children:[(0,a.jsx)(E,{siteBasePath:e,currentSlug:i,toc:r}
21370),(0,a.jsx)("main",{id:"stf-main",tabIndex:-1,className:"stf-main",children:n})]})]}),(0,a.jsx)(L,{siteBasePath:e,currentSlug:i,title:t,scale:s}),(0,a.jsx)(I,{siteBasePath:e,currentSlug:i})]})}let B={units:4e3,price:150,years:4,cliffMonths:12,intervalMonths:3,ratePct:22},q=[{months:1,label:"Monthly"},{months:3,label:"Quarterly"},{months:6,label:"Every six months"},{months:12,label:"Yearly"}];function R(e){let a=12*e.years,i=function(e,a,i){let t=[],s=a>0?a:i;for(;s<e;)t.push(s),s+=i;return t.push(e),t}(a,e.cliffMonths,e.intervalMonths),t=e.ratePct/100,s=0,r=0,n=0,o=[];return i.forEach((i,l)=>{let c=Math.floor(e.units*i/a),d=c-s;s=c;let h=d*e.price,m=h*t;r+=h,n+=m,o.push({index:l+1,month:i,units:d,cumUnits:c,gross:h,withheld:m,net:h-m,cumGross:r,cumWithheld:n})}),{totalMonths:a,events:o,totalUnits:s,totalGross:r,totalWithheld:n,totalNet:r-n}}function H(e,a){let i=/^(\d{4})-(\d{2})$/.exec(a.trim());if(!i)return`Month ${e}`;let t=Number(i[1]),s=Number(i[2]);if(s<1||s>12)return`Month ${e}`;let r=12*t+(s-1)+e;return`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][r%12]} ${Math.floor(r/12)}`}let D={W:760,H:400,L:74,R:156,T:44,B:96,fs:12,right:!0},W={W:360,H:340,L:52,R:18,T:40,B:92,fs:11,right:!1};function O({x:e,y:i,n:t,lx:s,ly:r,fs:n}){return(0,a.jsxs)("g",{className:"stf-c-balloon",children:[(0,a.jsx)("line",{x1:s,y1:r,x2:e,y2:i,className:"stf-c-leader"}),(0,a.jsx)("circle",{cx:s,cy:r,r:.95*n,className:"stf-c-ball"}),(0,a.jsx)("text",{x:s,y:r+.36*n,textAnchor:"middle",className:"stf-c-balltext",fontSize:n,children:t}),(0,a.jsx)("circle",{cx:e,cy:i,r:2.6,className:"stf-c-dot"})]})}function Y({res:e,input:i,geo:t,uid:s,className:r}){let{W:n,H:o,L:l,R:c,T:d,B:h,fs:m}=t,p=n-l-c,g=o-d-h,v=function(e,a=4){if(e<=0)return{top:1,step:.25};let i=e/a,t=Math.pow(10,Math.floor(Math.log10(i))),s=([1,2,2.5,5,10].find(e=>e*t>=i)??10)*t;return{top:Math.ceil(e/s)*s,step:s}}(e.totalGross,4),u=a=>l+a/e.totalMonths*p,b=e=>d+g-e/v.top*g,f=b(0),x=[[u(0),f]],y=[[u(0),f]],w=0,_=0;for(let a of e.events){x.push([u(a.month),b(w)],[u(a.month),b(a.cumGross)]);let e=a.cumGross-a.cumWithheld;y.push([u(a.month),b(_)],[u(a.month),b(e)]),w=a.cumGross,_=e}let k=e=>e.map(([e,a])=>`${e.toFixed(1)},${a.toFixed(1)}`).join(" "),j=k([...x,...y.slice().reverse()]),z=[];for(let e=0;e<=v.top+1e-9;e+=v.step)z.push(e);let C=[];for(let a=12;a<=e.totalMonths;a+=12)C.push(a);let M=e.events[0],P=e.events.slice(1),T=P.length?P[Math.floor((P.length-1)/2)]:void 0,E=e.events[e.events.length-1],F=f+58,L=i.cliffMonths,I=[];L>0&&I.push({a:0,b:L,label:`CLIFF ${L} MO`});let $=L>0?L:0,B=L>0?P.length:e.events.length;e.totalMonths>$&&B>0&&I.push({a:$,b:e.totalMonths,label:`${B} VEST${1===B?"":"S"} / ${e.totalMonths-$} MO`});let q=.62*m,R=l+p+30,H=e.totalNet;return(0,a.jsxs)("svg",{viewBox:`0 0 ${n} ${o}`,className:`stf-chart ${r}`,role:"img","aria-labelledby":`${s}-t`,focusable:"false",children:[(0,a.jsx)("title",{id:`${s}-t`,children:`Stepped vesting chart: ${S(e.totalUnits)} units vest in ${e.events.length} vests over ${e.totalMonths} months. Total gross value ${N(e.totalGross)}, estimated withholding ${N(e.totalWithheld)}, ${N(H)} after withholding. Every vest is listed in the vest table.`}),(0,a.jsxs)("defs",{children:[(0,a.jsx)("pattern",{id:`${s}-hatch`,width:"5",height:"5",patternUnits:"userSpaceOnUse",patternTransform:"rotate(45)",children:(0,a.jsx)("line",{x1:"0",y1:"0",x2:"0",y2:"5",className:"stf-c-hatchline"})}),(0,a.jsx)("marker",{id:`${s}-arr`,viewBox:"0 0 10 10",refX:"10",refY:"5",markerWidth:"7",markerHeight:"7",orient:"auto-start-reverse",children:(0,a.jsx)("path",{d:"M0 1.5 10 5 0 8.5z",className:"stf-c-arrow"})}),(0,a.jsx)("marker",{id:`${s}-arr-r`,viewBox:"0 0 10 10",refX:"10",refY:"5",markerWidth:"7",markerHeight:"7",orient:"auto-start-reverse",children:(0,a.jsx)("path",{d:"M0 1.5 10 5 0 8.5z",className:"stf-c-arrow stf-c-arrow--red"})})]}),z.map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:l,x2:l+p,y1:b(e),y2:b(e),className:0===e?"stf-c-axis":"stf-c-grid"}),(0,a.jsx)("text",{x:l-8,y:b(e)+.35*m,textAnchor:"end",fontSize:m,className:"stf-c-num",children:A(e)})]},e)),(0,a.jsx)("line",{x1:l,x2:l,y1:d-6,y2:f,className:"stf-c-axis"}),(0,a.jsx)("text",{x:l,y:d-16,fontSize:m,className:"stf-c-cap",children:"CUMULATIVE VALUE AT VEST"}),e.events.map(e=>(0,a.jsx)("line",{x1:u(e.month),x2:u(e.month),y1:f,y2:f+5,className:"stf-c-axis"},e.month)),C.map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:u(e),x2:u(e),y1:d,y2:f,className:"stf-c-grid stf-c-grid--v"}),(0,a.jsx)("text",{x:u(e),y:f+m+8,textAnchor:"middle",fontSize:m,className:"stf-c-num",children:`Y${e/12}`})]},e)),(0,a.jsx)("text",{x:l,y:f+m+8,textAnchor:"middle",fontSize:m,className:"stf-c-num",children:"0"}),(0,a.jsx)("polygon",{points:j,fill:`url(#${s}-hatch)`,className:"stf-c-band"}),(0,a.jsx)("polyline",{points:k(y),className:"stf-c-net"}),(0,a.jsx)("polyline",{points:k(x),className:"stf-c-gross",pathLength:1}),I.map((e,i)=>{let t=u(e.a),r=u(e.b),n=e.label.length*q+8<r-t,o=n||i%2==1?F-6:F+m+6;return(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:t,x2:t,y1:f+8,y2:F+6,className:"stf-c-ext"}
21370),(0,a.jsx)("line",{x1:r,x2:r,y1:f+8,y2:F+6,className:"stf-c-ext"}),(0,a.jsx)("line",{x1:t,x2:r,y1:F,y2:F,className:"stf-c-dim",markerStart:`url(#${s}-arr)`,markerEnd:`url(#${s}-arr)`}),(0,a.jsx)("text",{x:n?(t+r)/2:t+2,y:o,textAnchor:n?"middle":"start",fontSize:m,className:"stf-c-dimtext",children:e.label})]},e.label)}),t.right&&E?(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:u(E.month)+4,x2:R+6,y1:b(e.totalGross),y2:b(e.totalGross),className:"stf-c-ext"}),(0,a.jsx)("line",{x1:l+p+4,x2:R+6,y1:f,y2:f,className:"stf-c-ext"}),(0,a.jsx)("line",{x1:R,x2:R,y1:f,y2:b(e.totalGross),className:"stf-c-dim",markerStart:`url(#${s}-arr)`,markerEnd:`url(#${s}-arr)`}),(0,a.jsx)("text",{x:R+10,y:Math.max((f+b(e.totalGross))/2,b(e.totalGross)+4*m)-4,fontSize:m,className:"stf-c-cap",children:"GROSS"}),(0,a.jsx)("text",{x:R+10,y:Math.max((f+b(e.totalGross))/2,b(e.totalGross)+4*m)+m+1,fontSize:m+1,className:"stf-c-dimtext",children:A(e.totalGross)}),e.totalWithheld>0?(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:u(E.month)+4,x2:R+34,y1:b(H),y2:b(H),className:"stf-c-ext stf-c-ext--red"}),(0,a.jsx)("line",{x1:R+28,x2:R+28,y1:b(H),y2:b(e.totalGross),className:"stf-c-dim stf-c-dim--red"}),(0,a.jsx)("text",{x:R+36,y:b(e.totalGross)+m,fontSize:m,className:"stf-c-red",children:"WITHHELD"}),(0,a.jsx)("text",{x:R+36,y:b(e.totalGross)+2*m+3,fontSize:m+1,className:"stf-c-red",children:A(e.totalWithheld)})]}):null]}):null,M?(0,a.jsx)(O,{x:u(M.month),y:b(M.cumGross),n:1,lx:Math.max(l+m+4,u(M.month)-34),ly:Math.max(d+m,b(M.cumGross)-34),fs:m}):null,T&&T!==E?(0,a.jsx)(O,{x:u(T.month),y:b(T.cumGross),n:2,lx:u(T.month)-30,ly:Math.max(d+m,b(T.cumGross)-32),fs:m}):null,E&&e.events.length>1?(0,a.jsx)(O,{x:u(E.month),y:b(E.cumGross),n:3,lx:u(E.month)-34,ly:Math.max(d+m,b(E.cumGross)-26),fs:m}):null]})}let V={units:String(B.units),price:String(B.price),years:String(B.years),cliffMonths:String(B.cliffMonths),intervalMonths:String(B.intervalMonths),ratePct:String(B.ratePct),grant:""};function G({id:e,label:i,hint:t,error:s,children:r}){return(0,a.jsxs)("div",{className:`stf-pf${s?" is-bad":""}`,children:[(0,a.jsx)("label",{htmlFor:e,className:"stf-pf-label",children:i}),r,t?(0,a.jsx)("p",{id:`${e}-hint`,className:"stf-pf-hint",children:t}):null,s?(0,a.jsx)("p",{id:`${e}-err`,className:"stf-pf-err",children:s}):null]})}function K({tableOpen:e=!1,headingLevel:i=3}){let s,r,n,o=(0,t.useId)().replace(/:/g,""),[l,c]=(0,t.useState)(V),d={units:(s=e=>""===e.trim()?NaN:Number(e.replace(/[,$\s]/g,"")))(l.units),price:s(l.price),years:s(l.years),cliffMonths:s(l.cliffMonths),intervalMonths:Number(l.intervalMonths),ratePct:s(l.ratePct)},h=(r=[],Number.isFinite(d.units)&&!(d.units<1)&&Number.isInteger(d.units)?d.units>1e7&&r.push({field:"units",message:"Enter 10,000,000 units or fewer."}):r.push({field:"units",message:"Enter a whole number of units, 1 or more."}),!Number.isFinite(d.price)||d.price<0?r.push({field:"price",message:"Enter a price of 0 or more."}):d.price>1e5&&r.push({field:"price",message:"Enter a price of $100,000 or less."}),(!Number.isFinite(d.years)||d.years<1||d.years>10||!Number.isInteger(d.years))&&r.push({field:"years",message:"Enter a whole number of years from 1 to 10."}),n=12*d.years,Number.isFinite(d.cliffMonths)&&!(d.cliffMonths<0)&&Number.isInteger(d.cliffMonths)?Number.isFinite(n)&&d.cliffMonths>n&&r.push({field:"cliffMonths",message:"The cliff cannot be longer than the vesting period."}):r.push({field:"cliffMonths",message:"Enter a whole number of months, 0 or more."}),(!Number.isFinite(d.ratePct)||d.ratePct<0||d.ratePct>100)&&r.push({field:"ratePct",message:"Enter a rate from 0 to 100."}),r),m=(0,t.useRef)(B);0===h.length&&(m.current=d);let p=m.current,g=(0,t.useMemo)(()=>R(p),[p]),v=e=>h.find(a=>a.field===e)?.message,u=e=>a=>c(i=>({...i,[e]:a.target.value})),b=(e,a,i)=>[a?`${e}-hint`:"",i?`${e}-err`:""].filter(Boolean).join(" ")||void 0,f=q.find(e=>e.months===p.intervalMonths)?.label.toLowerCase()??"",x=g.events[0],y=g.events.slice(1),w=y.map(e=>e.units),_=w.length?Math.min(...w):0,k=w.length?Math.max(...w):0,j=e=>`${o}-${e}`;return(0,a.jsxs)("div",{className:"stf-plotter",children:[(0,a.jsxs)("form",{className:"stf-p-inputs",onSubmit:e=>e.preventDefault(),"aria-label":"Vesting plotter inputs",children:[(0,a.jsx)("p",{className:"stf-label stf-p-inputs-h",children:"Inputs"}),(0,a.jsx)(G,{id:j("units"),label:"Units granted",error:v("units"),children:(0,a.jsx)("input",{id:j("units"),className:"stf-input stf-num",inputMode:"numeric",value:l.units,onChange:u("units"),"aria-invalid":!!v("units"),"aria-describedby":b(j("units"),!1,!!v("units"))})}),(0,a.jsx)(G,{id:j("price"),label:"Price per unit ($)",hint:"Held constant at every vest.",error:v("price"),children:(0,a.jsx)("input",{id:j("price"),className:"stf-input stf-num",inputMode:"decimal",value:l.price,onChange:u("price"),"aria-invalid":!!v("price"),"aria-describedby":b(j("price"),!0,!!v("price"))})}),(0,a.jsxs)("div",{className:"stf-pf-row",children:[(0,a.jsx)(G,{id:j("years"),label:"Vesting period (years)",error:v("years"),children:(0,a.jsx)("input",{id:j("years"),className:"stf-input stf-num",inputMode:"numeric",value:l.years,onChange:u("years"),"aria-invalid":!!v("years"),"aria-describedby":b(j("years"),!1,!!v("years"))})}),(0,a.jsx)(G,{id:j("cliff"),label:"Cliff (months)",error:v("cliffMonths"),children:(0,a.jsx)("input",{id:j("cliff"),className:"stf-input stf-num",inputMode:"numeric",value:l.cliffMonths,onChange:u("cliffMonths"),"aria-invalid":!!v("cliffMonths"),"aria-describedby":b(j("cliff"),!1,
21370!!v("cliffMonths"))})})]}),(0,a.jsx)(G,{id:j("interval"),label:"Vests after the cliff",children:(0,a.jsx)("select",{id:j("interval"),className:"stf-input stf-select",value:l.intervalMonths,onChange:u("intervalMonths"),children:q.map(e=>(0,a.jsx)("option",{value:e.months,children:e.label},e.months))})}),(0,a.jsx)(G,{id:j("rate"),label:(0,a.jsxs)(a.Fragment,{children:["Supplemental withholding rate (%) ",(0,a.jsx)("span",{className:"stf-tag",children:"Assumption"})]}),hint:"22% is the IRS flat rate for supplemental wages up to $1 million in a year (IRS Publication 15). Above $1 million the required rate is 37%. Change it to test your own assumption.",error:v("ratePct"),children:(0,a.jsx)("input",{id:j("rate"),className:"stf-input stf-num",inputMode:"decimal",value:l.ratePct,onChange:u("ratePct"),"aria-invalid":!!v("ratePct"),"aria-describedby":b(j("rate"),!0,!!v("ratePct"))})}),(0,a.jsx)(G,{id:j("grant"),label:"Grant month (optional, YYYY-MM)",hint:"Labels each vest with a month instead of a month count.",children:(0,a.jsx)("input",{id:j("grant"),className:"stf-input stf-num",placeholder:"2026-01",value:l.grant,onChange:u("grant"),"aria-describedby":`${j("grant")}-hint`})}),(0,a.jsx)("button",{type:"button",className:"stf-btn stf-btn--line stf-btn--sm",onClick:()=>c(V),children:"Reset to defaults"}),h.length?(0,a.jsx)("p",{className:"stf-p-stale",role:"status",children:"The chart shows the last valid inputs until the highlighted field is fixed."}):null]}),(0,a.jsxs)("div",{className:"stf-p-out",children:[(0,a.jsxs)("figure",{className:"stf-p-fig",children:[(0,a.jsxs)("figcaption",{className:"stf-p-figcap",children:[(0,a.jsx)("span",{className:"stf-label",children:"Detail: vest calendar"}),(0,a.jsx)("span",{className:"stf-label stf-label--red",children:"Illustration, not a forecast"})]}),(0,a.jsx)(Y,{res:g,input:p,geo:D,uid:`${o}w`,className:"stf-chart--wide"}),(0,a.jsx)(Y,{res:g,input:p,geo:W,uid:`${o}n`,className:"stf-chart--narrow"}),(0,a.jsxs)("ul",{className:"stf-legend","aria-label":"Chart key",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-key stf-key--gross","aria-hidden":!0})," Cumulative gross value"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-key stf-key--net","aria-hidden":!0})," After estimated withholding"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-key stf-key--band","aria-hidden":!0})," Estimated withholding"]})]})]}),(0,a.jsxs)("ol",{className:"stf-callouts","aria-label":"Callouts on the chart",children:[x?(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-ball","aria-hidden":!0,children:"1"}),(0,a.jsxs)("p",{children:[(0,a.jsxs)("strong",{children:[p.cliffMonths>0?`Cliff vest, ${H(x.month,l.grant)}`:`First vest, ${H(x.month,l.grant)}`,"."]})," ",S(x.units)," units, ",N(x.gross)," gross, about ",N(x.withheld)," withheld."]})]}):null,y.length?(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-ball","aria-hidden":!0,children:"2"}),(0,a.jsxs)("p",{children:[(0,a.jsxs)("strong",{children:["Then ",y.length," ",f," vest",1===y.length?"":"s","."]})," ",_===k?`${S(_)} units each`:`${S(_)} to ${S(k)} units each`," (whole units; rounding moves a unit between vests),"," ","about ",N(y[0].gross)," gross and ",N(y[0].withheld)," withheld per vest."]})]}):null,(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-ball","aria-hidden":!0,children:g.events.length>1?3:2}),(0,a.jsxs)("p",{children:[(0,a.jsxs)("strong",{children:["After ",g.totalMonths," months."]})," ",S(g.totalUnits)," units, ",N(g.totalGross)," gross,"," ",N(g.totalWithheld)," estimated withholding at ",p.ratePct,"%, ",N(g.totalNet)," after withholding."]})]})]}),(0,a.jsx)("p",{className:"stf-visually-hidden","aria-live":"polite",children:`Totals: ${N(g.totalGross)} gross, ${N(g.totalWithheld)} estimated withholding, ${N(g.totalNet)} after withholding.`}),(0,a.jsxs)("details",{className:"stf-p-table",open:e,children:[(0,a.jsxs)("summary",{children:["Vest table: every vest in numbers (",g.events.length," rows)"]}),(0,a.jsx)("div",{className:"stf-table-wrap",role:"region","aria-label":"Vest table",tabIndex:0,children:(0,a.jsxs)("table",{className:"stf-table",children:[(0,a.jsx)("caption",{className:"stf-visually-hidden",children:"Every vest with units, gross value, estimated withholding and value after withholding"}),(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"col",children:"No."}),(0,a.jsx)("th",{scope:"col",children:"Vests"}),(0,a.jsx)("th",{scope:"col",children:"Units"}),(0,a.jsx)("th",{scope:"col",children:"Gross value"}),(0,a.jsx)("th",{scope:"col",children:"Est. withholding"}),(0,a.jsx)("th",{scope:"col",children:"After withholding"})]})}),(0,a.jsx)("tbody",{children:g.events.map(e=>(0,a.jsxs)("tr",{children:[(0,a.jsx)("td",{children:e.index}),(0,a.jsx)("th",{scope:"row",children:H(e.month,l.grant)}),(0,a.jsx)("td",{children:S(e.units)}),(0,a.jsx)("td",{children:N(e.gross)}
21370),(0,a.jsx)("td",{children:N(e.withheld)}),(0,a.jsx)("td",{children:N(e.net)})]},e.month))}),(0,a.jsx)("tfoot",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("td",{}),(0,a.jsx)("th",{scope:"row",children:"Total"}),(0,a.jsx)("td",{children:S(g.totalUnits)}),(0,a.jsx)("td",{children:N(g.totalGross)}),(0,a.jsx)("td",{children:N(g.totalWithheld)}),(0,a.jsx)("td",{children:N(g.totalNet)})]})})]})})]}),(0,a.jsxs)("div",{className:"stf-method",children:[(0,a.jsx)(2===i?"h2":"h3",{id:j("method"),className:"stf-method-h",children:"Method"}),(0,a.jsxs)("ul",{className:"stf-formulas",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("code",{children:"T = years × 12"})," months; ",(0,a.jsx)("code",{children:"C"})," = cliff; ",(0,a.jsx)("code",{children:"I"})," = months between later vests."]}),(0,a.jsxs)("li",{children:["Vests fall at months ",(0,a.jsx)("code",{children:"C, C+I, C+2I, …"})," and always at ",(0,a.jsx)("code",{children:"T"}),". With no cliff the first vest is at ",(0,a.jsx)("code",{children:"I"}),"."]}),(0,a.jsxs)("li",{children:["Units vested by month ",(0,a.jsx)("code",{children:"m"}),": ",(0,a.jsx)("code",{children:"floor(N × m ÷ T)"}),". Each vest is the difference from the one before, so the units add up to ",(0,a.jsx)("code",{children:"N"})," exactly."]}),(0,a.jsxs)("li",{children:["Gross value of a vest: ",(0,a.jsx)("code",{children:"units × P"}),", with the price ",(0,a.jsx)("code",{children:"P"})," held constant."]}),(0,a.jsxs)("li",{children:["Estimated withholding: ",(0,a.jsx)("code",{children:"gross × r"}),", where ",(0,a.jsx)("code",{children:"r"})," is the rate you enter."]})]}),(0,a.jsx)("p",{children:"Real vests are valued at the share price on each vest date, and your final tax can be higher or lower than what is withheld. This does not model the alternative minimum tax, state tax, Social Security or Medicare. Nothing you type leaves your browser."})]})]})]})}function U(){let e=R(B),i=a=>36+a/e.totalMonths*388,t=e=>246-e/B.units*206,s=`M${i(0)} ${t(0)}`;for(let a of e.events)s+=` H${i(a.month).toFixed(1)} V${t(a.cumUnits).toFixed(1)}`,a.cumUnits;let r=`${s} V${t(0)} Z`,n=i(B.cliffMonths),o=t(0)+34,l=i(e.totalMonths)+30;return(0,a.jsxs)("svg",{viewBox:"0 0 520 330",className:"stf-cover-svg",role:"img","aria-labelledby":"stf-cover-t",focusable:"false",children:[(0,a.jsx)("title",{id:"stf-cover-t",children:"Elevation of a 4-year grant with a 1-year cliff: 25% of the units vest at month 12, then 1/16 of the grant every quarter until month 48."}),(0,a.jsxs)("defs",{children:[(0,a.jsx)("pattern",{id:"stf-cover-hatch",width:"7",height:"7",patternUnits:"userSpaceOnUse",patternTransform:"rotate(45)",children:(0,a.jsx)("line",{x1:"0",y1:"0",x2:"0",y2:"7",className:"stf-c-hatchline stf-c-hatchline--ink"})}),(0,a.jsx)("marker",{id:"stf-cover-arr",viewBox:"0 0 10 10",refX:"10",refY:"5",markerWidth:"7",markerHeight:"7",orient:"auto-start-reverse",children:(0,a.jsx)("path",{d:"M0 1.5 10 5 0 8.5z",className:"stf-c-arrow"})})]}),(0,a.jsx)("line",{x1:20,x2:i(e.totalMonths)+14,y1:t(0),y2:t(0),className:"stf-c-center"}),(0,a.jsx)("path",{d:r,fill:"url(#stf-cover-hatch)",className:"stf-cover-fill"}),(0,a.jsx)("path",{d:s,className:"stf-cover-line",pathLength:1}),(0,a.jsx)("line",{x1:i(0),x2:i(e.totalMonths),y1:t(0),y2:t(0),className:"stf-c-axis"}),(0,a.jsx)("line",{x1:i(0),x2:i(0),y1:t(0)+6,y2:o+6,className:"stf-c-ext"}),(0,a.jsx)("line",{x1:n,x2:n,y1:t(0)+6,y2:o+6,className:"stf-c-ext"}),(0,a.jsx)("line",{x1:i(e.totalMonths),x2:i(e.totalMonths),y1:t(0)+6,y2:o+6,className:"stf-c-ext"}),(0,a.jsx)("line",{x1:i(0),x2:n,y1:o,y2:o,className:"stf-c-dim",markerStart:"url(#stf-cover-arr)",markerEnd:"url(#stf-cover-arr)"}),(0,a.jsx)("line",{x1:n,x2:i(e.totalMonths),y1:o,y2:o,className:"stf-c-dim",markerStart:"url(#stf-cover-arr)",markerEnd:"url(#stf-cover-arr)"}),(0,a.jsx)("text",{x:(i(0)+n)/2,y:o-7,textAnchor:"middle",fontSize:"12",className:"stf-c-dimtext",children:"12 MO"}),(0,a.jsx)("text",{x:(n+i(e.totalMonths))/2,y:o-7,textAnchor:"middle",fontSize:"12",className:"stf-c-dimtext",children:"12 × 3 MO"}),(0,a.jsx)("line",{x1:i(0),x2:i(e.totalMonths),y1:o+30,y2:o+30,className:"stf-c-dim",markerStart:"url(#stf-cover-arr)",markerEnd:"url(#stf-cover-arr)"}),(0,a.jsx)("line",{x1:i(0),x2:i(0),y1:o+8,y2:o+36,className:"stf-c-ext"}),(0,a.jsx)("line",{x1:i(e.totalMonths),x2:i(e.totalMonths),y1:o+8,y2:o+36,className:"stf-c-ext"}),(0,a.jsx)("text",{x:(i(0)+i(e.totalMonths))/2,y:o+23,textAnchor:"middle",fontSize:"12",className:"stf-c-dimtext",children:"48 MO OVERALL"}),(0,a.jsx)("line",{x1:i(e.totalMonths)+4,x2:l+6,y1:t(B.units),y2:t(B.units),className:"stf-c-ext"}),(0,a.jsx)("line",{x1:i(e.totalMonths)+4,x2:l+6,y1:t(0),y2:t(0),className:"stf-c-ext"}),(0,a.jsx)("line",{x1:l,x2:l,y1:t(0),y2:t(B.units),className:"stf-c-dim",markerStart:"url(#stf-cover-arr)",markerEnd:"url(#stf-cover-arr)"}),(0,a.jsx)("text",{x:l+8,y:(t(0)+t(B.units))/2+4,fontSize:"12",className:"stf-c-dimtext",children:"100%"}),(0,a.jsxs)("g",{className:"stf-c-balloon",children:[(0,a.jsx)("line",{x1:n,y1:t(1e3),x2:n-40,y2:t(1e3)-58,className:"stf-c-leader stf-c-leader--red"}),(0,a.jsx)("circle",{cx:n-40,cy:t(1e3)-58,r:"12",className:"stf-c-ball stf-c-ball--red"}),(0,a.jsx)("text",{x:n-40,y:t(1e3)-54,textAnchor:"middle",fontSize:"12",className:"stf-c-balltext stf-c-balltext--red",children:"1"}),(0,a.jsx)("text",{x:n-58,y:t(1e3)-80,fontSize:"12",className:"stf-c-red",children:"25% AT THE CLIFF"})]}),(0,a.jsxs)("g",{className:"stf-c-balloon",children:[(0,a.jsx)("line",{x1:i(30),y1:t(2500),x2:i(30)-44,y2:t(2500)-52,className:"stf-c-leader stf-c-leader--red"}),(0,a.jsx)("circle",{cx:i(30)-44,cy:t(2500)-52,r:"12",className:"stf-c-ball stf-c-ball--red"}),(0,a.jsx)("text",{x:i(30)-44,y:t(2500)-48,textAnchor:"middle",fontSize:"12",className:"stf-c-balltext stf-c-balltext--red",children:"2"}),(0,a.jsx)("text",{x:i(30)-62,y:t(2500)-74,fontSize:"12",className:"stf-c-red",children:"6.25% EACH QUARTER"})]})]})}var J=e.i(247167),X=e.i(3303);let Z=J.default.env.NEXT_PUBLIC_TURNSTILE_SITE_KEY;function Q({block:e,siteKey:i,siteName:s,pageSlug:r,pageTitle:n,presetTopic:o,variant:c="client"}){let d=e.steps??[{title:e.title}],h=d.length,[m,p]=(0,t.useState)(1),[g,v]=(0,t.useState)(""),[u,b]=(0,t.useState)(!1),[f,x]=(0,t.useState)({kind:"idle"}),y=(0,t.useRef)(null),w=(0,t.useRef)(null),_=(0,t.useRef)(null),k="advisor"===c?"stf-aq":"stf-q";(0,t.useEffect)(()=>{o&&(v(o),p(1))},[o]);let j=()=>window.setTimeout(()=>
21370w.current?.focus(),0);function N(){(function(e){let a=y.current;if(!a)return!0;for(let i of Array.from(a.querySelectorAll(`[data-step="${e}"] input, [data-step="${e}"] select, [data-step="${e}"] textarea`)))if(!i.reportValidity())return!1;return!0})(m)&&(p(e=>Math.min(e+1,h)),j())}async function S(a){if(a.preventDefault(),m<h)return void N();let t=a.currentTarget,o=new FormData(t),l=String(o.get("company_website")??"").trim(),c=String(o.get("cf-turnstile-response")??"").trim(),d={};for(let[e,a]of o.entries())"company_website"!==e&&"cf-turnstile-response"!==e&&"string"==typeof a&&(d[e]=a.trim());b(!0);try{let a=await fetch("/api/leads",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({siteKey:i,siteName:s,pageSlug:r,pageTitle:n,sourceUrl:window.location.href,honeypot:l,turnstileToken:c,fields:d})}),o=await a.json().catch(()=>null);if(!a.ok)throw Error(o?.message??"We could not send your request just now. Please try again.");t.reset(),v(""),p(1),x({kind:"success",message:e.successMessage??"Thank you. We have your request."}),window.setTimeout(()=>_.current?.focus(),0)}catch(e){x({kind:"error",message:e instanceof Error?e.message:"We could not send your request just now. Please try again."})}finally{b(!1)}}if("success"===f.kind)return(0,a.jsxs)("div",{ref:_,tabIndex:-1,className:"stf-quiz stf-quiz--done",role:"status",children:[(0,a.jsx)("p",{className:"stf-label",children:"advisor"===c?"Application received":"Request received"}),(0,a.jsx)("h3",{className:"stf-quiz-h",children:"Thank you."}),(0,a.jsx)("p",{children:f.message}),"advisor"===c?null:(0,a.jsxs)("ol",{className:"stf-done-steps",children:[(0,a.jsx)("li",{children:"We review your answers."}),(0,a.jsx)("li",{children:"We contact you to confirm what you need."}),(0,a.jsxs)("li",{children:["We match you with a licensed financial advisor who specializes in ",l,". You decide what happens next."]})]})]});let A=e=>{let i=`${k}-${e.name}`,t=e.required??!1;if("hidden"===e.type)return(0,a.jsx)("input",{type:"hidden",name:e.name,value:e.value??""},e.name);if("checkbox"===e.type)return(0,a.jsxs)("label",{className:"stf-check",children:[(0,a.jsx)("input",{type:"checkbox",name:e.name,value:"yes",required:t}),(0,a.jsx)("span",{children:e.label})]},e.name);let s=(0,a.jsxs)("label",{htmlFor:i,className:"stf-field-label",children:[e.label,t||e.label.toLowerCase().includes("optional")?null:(0,a.jsx)("span",{className:"stf-opt",children:" (optional)"})]});if("select"===e.type){let r="help_topic"===e.name;return(0,a.jsxs)("div",{className:"stf-field",children:[s,(0,a.jsxs)("select",{id:i,name:e.name,required:t,className:"stf-input stf-select",...r?{value:g,onChange:e=>v(e.target.value)}:{defaultValue:""},children:[(0,a.jsx)("option",{value:"",disabled:!0,children:"Select…"}),(e.options??[]).map(e=>(0,a.jsx)("option",{value:e,children:e},e))]})]},e.name)}return"textarea"===e.type?(0,a.jsxs)("div",{className:"stf-field",children:[s,(0,a.jsx)("textarea",{id:i,name:e.name,required:t,rows:4,className:"stf-input"})]},e.name):(0,a.jsxs)("div",{className:"stf-field",children:[s,(0,a.jsx)("input",{id:i,name:e.name,type:e.type,required:t,className:"stf-input",autoComplete:"email"===e.name?"email":"phone"===e.name?"tel":"full_name"===e.name?"name":"location"===e.name?"postal-code":"off"})]},e.name)};return(0,a.jsxs)("form",{ref:y,className:"stf-quiz",onSubmit:S,"aria-label":"advisor"===c?"Advisor application":"Advisor match request",children:[(0,a.jsxs)("div",{className:"stf-quiz-top",children:[(0,a.jsxs)("p",{className:"stf-label stf-quiz-count",children:["Step ",m," of ",h]}),(0,a.jsx)("ol",{className:"stf-quiz-steps","aria-hidden":!0,children:d.map((e,i)=>(0,a.jsx)("li",{className:i+1<m?"is-done":i+1===m?"is-on":"",children:i+1},e.title))})]}),d.map((i,t)=>(0,a.jsxs)("div",{"data-step":t+1,hidden:m!==t+1,className:"stf-quiz-step",children:[(0,a.jsx)("h3",{ref:m===t+1?w:void 0,tabIndex:-1,className:"stf-quiz-h",children:i.title}),i.description?(0,a.jsx)("p",{className:"stf-quiz-d",children:i.description}):null,e.fields.filter(e=>(e.step??1)===t+1).map(A)]},i.title)),(0,a.jsxs)("label",{className:"stf-hp","aria-hidden":"true",children:[(0,a.jsx)("span",{children:"Leave this blank"}),(0,a.jsx)("input",{autoComplete:"off",name:"company_website",tabIndex:-1,type:"text"})]}),Z?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(X.default,{src:"https://challenges.cloudflare.com/turnstile/v0/api.js",strategy:"afterInteractive",async:!0,defer:!0}),(0,a.jsx)("div",{className:"cf-turnstile","data-sitekey":Z,"data-theme":"light"})]}):null,(0,a.jsxs)("div",{className:"stf-quiz-nav",children:[m>1?(0,a.jsx)("button",{type:"button",className:"stf-btn stf-btn--line",onClick:function(){p(e=>Math.max(1,e-1)),j()},children:"Back"}):null,m<h?(0,a.jsx)("button",{type:"button",className:"stf-btn stf-btn--ink",onClick:N,children:"Next step"}):(0,a.jsx)("button",{type:"submit",className:"stf-btn stf-btn--red",disabled:u,children:u?"Sending…":e.submitLabel??"Get matched with an advisor"})]}),e.disclosure?(0,a.jsx)("p",{className:"stf-caution",children:e.disclosure}):null,"advisor"===c?null:(0,a.jsx)("p",{className:"stf-caution",children:"Please do not include material nonpublic information, account numbers, or anything covered by a confidentiality obligation."}),(0,a.jsx)("div",{className:`stf-status${"error"===f.kind?" stf-status--error":""}`,role:"error"===f.kind?"alert":"status",children:"error"===f.kind?f.message:""})]})}let ee=(0,s.advisorNiche)(n).topics.filter(e=>"Something else"!==e),ea=[{n:1,title:"Vesting plotter",body:"Grant size, price, schedule and a withholding rate in; a vest calendar with gross value and estimated withholding out.",to:"#plotter",here:!0},{n:2,title:"Concentration check",body:"How much of what you own is your employer'
21370s stock, and what a price drop you choose would take with it.",to:"/tools#concentration"},{n:3,title:"After-tax 401(k) headroom",body:"The room between your plan's total limit and what you and your employer already put in: the space a mega backdoor Roth uses.",to:"/tools#headroom"}];function ei({siteBasePath:e="",advisorBlock:s}){let[r,d]=(0,t.useState)("");return(0,a.jsxs)($,{siteBasePath:e,currentSlug:"/",title:"Cover sheet",scale:"NTS",children:[(0,a.jsxs)("section",{className:"stf-hero","aria-labelledby":"stf-h1",children:[(0,a.jsxs)("div",{className:"stf-hero-copy",children:[(0,a.jsx)("h1",{id:"stf-h1",className:"stf-h1",children:"Your equity, drawn to scale."}),(0,a.jsxs)("p",{className:"stf-lede",children:["For software and hardware engineers paid partly in stock. Plot your vesting schedule, see what a flat withholding rate takes from each vest, then get matched with a licensed financial advisor who specializes in"," ",l,"."]}),(0,a.jsxs)("div",{className:"stf-hero-cta",children:[(0,a.jsx)(i.default,{href:"#advisor",className:"stf-btn stf-btn--red",children:"Find an advisor"}),(0,a.jsxs)(i.default,{href:"#plotter",className:"stf-textlink",children:["Plot your vests ",(0,a.jsx)("span",{"aria-hidden":!0,children:"↓"})]})]})]}),(0,a.jsxs)("figure",{className:"stf-hero-fig stf-detail",children:[(0,a.jsxs)("figcaption",{className:"stf-detail-cap",children:[(0,a.jsx)("span",{children:"Detail 1"}),(0,a.jsx)("span",{children:"Elevation: 4-year grant"}),(0,a.jsx)("span",{children:"NTS"})]}),(0,a.jsx)(U,{})]})]}),(0,a.jsxs)("section",{className:"stf-sec","aria-labelledby":"stf-how-h",children:[(0,a.jsxs)("header",{className:"stf-sec-head",children:[(0,a.jsx)("p",{className:"stf-secno","aria-hidden":!0,children:"2"}),(0,a.jsx)("h2",{id:"stf-how-h",className:"stf-h2",children:"How it works"})]}),(0,a.jsxs)("ol",{className:"stf-seq",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-ball","aria-hidden":!0,children:"1"}),(0,a.jsx)("h3",{className:"stf-h3",children:"Answer a few questions"}),(0,a.jsx)("p",{children:"Four short steps: where you are, your finances in ranges, your goals, and how to reach you."})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-ball","aria-hidden":!0,children:"2"}),(0,a.jsx)("h3",{className:"stf-h3",children:"We review and contact you"}),(0,a.jsx)("p",{children:"We review your answers and contact you to confirm what you need."})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-ball","aria-hidden":!0,children:"3"}),(0,a.jsx)("h3",{className:"stf-h3",children:"We match you"}),(0,a.jsxs)("p",{children:["We match you with a licensed financial advisor who specializes in ",l,". You decide what happens next."]})]})]})]}),(0,a.jsxs)("section",{id:"plotter",className:"stf-sec","aria-labelledby":"stf-plot-h",children:[(0,a.jsxs)("header",{className:"stf-sec-head",children:[(0,a.jsx)("p",{className:"stf-secno","aria-hidden":!0,children:"3"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{id:"stf-plot-h",className:"stf-h2",children:"Vesting plotter"}),(0,a.jsx)("p",{className:"stf-sec-lede",children:"Enter a grant. The line steps up at every vest, and the hatched band is the part a flat withholding rate takes. It starts at 4,000 units at $150, four years, a one-year cliff, then quarterly."})]})]}),(0,a.jsx)(K,{}),(0,a.jsxs)("div",{className:"stf-ask",children:[(0,a.jsx)("p",{children:"Withholding at a flat rate is an estimate, not your tax bill. An advisor who works with engineers can look at the gap with your real numbers."}),(0,a.jsx)("button",{type:"button",className:"stf-btn stf-btn--ink",onClick:()=>{d(h),_()},children:"Ask an advisor about RSUs"})]})]}),(0,a.jsx)("section",{id:"advisor",className:"stf-sec stf-sec--form","aria-labelledby":"stf-adv-h",children:(0,a.jsxs)("div",{className:"stf-form-grid",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("header",{className:"stf-sec-head",children:[(0,a.jsx)("p",{className:"stf-secno","aria-hidden":!0,children:"4"}),(0,a.jsx)("h2",{id:"stf-adv-h",className:"stf-h2",tabIndex:-1,"data-stf-form-top":!0,children:"Find an advisor"})]}),(0,a.jsx)("p",{className:"stf-body",children:s.body}),(0,a.jsx)("p",{className:"stf-label stf-help-h",children:"What people ask advisors about"}),(0,a.jsx)("ul",{className:"stf-ticks",children:ee.map(e=>(0,a.jsx)("li",{children:e},e))})]}),(0,a.jsx)(Q,{block:s,siteKey:n,siteName:o,pageSlug:"/",pageTitle:o,presetTopic:r})]})}),(0,a.jsxs)("section",{className:"stf-sec","aria-labelledby":"stf-notes-list-h",children:[(0,a.jsxs)("header",{className:"stf-sec-head",children:[(0,a.jsx)("p",{className:"stf-secno","aria-hidden":!0,
21370children:"5"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{id:"stf-notes-list-h",className:"stf-h2",children:"Guides"}),(0,a.jsx)("p",{className:"stf-sec-lede",children:"Ten guides, each about a four-minute read. Listed like sheets in a set."})]})]}),(0,a.jsx)("ol",{className:"stf-dlist",children:c.map((t,s)=>(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-dlist-no","aria-hidden":!0,children:`A-1${String(s+1).padStart(2,"0")}`}),(0,a.jsxs)("div",{children:[(0,a.jsx)(i.default,{href:w(e,`/blog/${t.slug}`),className:"stf-dlist-t",children:t.title}),(0,a.jsx)("p",{className:"stf-dlist-ex",children:t.excerpt})]}),(0,a.jsxs)("p",{className:"stf-dlist-meta",children:[t.pillar," ",(0,a.jsx)("span",{"aria-hidden":!0,children:"·"})," ",t.read," min"]})]},t.slug))})]}),(0,a.jsxs)("section",{className:"stf-sec","aria-labelledby":"stf-tools-h",children:[(0,a.jsxs)("header",{className:"stf-sec-head",children:[(0,a.jsx)("p",{className:"stf-secno","aria-hidden":!0,children:"6"}),(0,a.jsx)("h2",{id:"stf-tools-h",className:"stf-h2",children:"Tools"})]}),(0,a.jsx)("ol",{className:"stf-callist",children:ea.map(t=>(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-ball","aria-hidden":!0,children:t.n}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"stf-h3",children:(0,a.jsx)(i.default,{href:t.here?t.to:w(e,t.to),className:"stf-link",children:t.title})}),(0,a.jsx)("p",{children:t.body})]})]},t.n))})]}),(0,a.jsx)("section",{className:"stf-sec","aria-labelledby":"stf-close-h",children:(0,a.jsxs)("div",{className:"stf-revbox",children:[(0,a.jsx)("p",{className:"stf-revbox-tag","aria-hidden":!0,children:"Rev. request"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{id:"stf-close-h",className:"stf-h2",children:"Have a real grant on the table?"}),(0,a.jsxs)("p",{className:"stf-body",children:["An offer to compare, a refresher, an option exercise, too much in one stock. Tell us about it and we match you with a licensed financial advisor who specializes in ",l,"."]})]}),(0,a.jsx)(i.default,{href:"#advisor",className:"stf-btn stf-btn--red",children:"Find an advisor"})]})})]})}let et=e=>""===e.trim()?NaN:Number(e.replace(/[,$%\s]/g,""));function es({id:e,label:i,hint:t,value:s,onChange:r,error:n,suffix:o}){let l=[t?`${e}-hint`:"",n?`${e}-err`:""].filter(Boolean).join(" ")||void 0;return(0,a.jsxs)("div",{className:`stf-pf${n?" is-bad":""}`,children:[(0,a.jsx)("label",{htmlFor:e,className:"stf-pf-label",children:i}),(0,a.jsxs)("div",{className:"stf-pf-affix",children:[(0,a.jsx)("input",{id:e,className:"stf-input stf-num",inputMode:"decimal",value:s,onChange:e=>r(e.target.value),"aria-invalid":!!n,"aria-describedby":l}),o?(0,a.jsx)("span",{"aria-hidden":!0,children:o}):null]}),t?(0,a.jsx)("p",{id:`${e}-hint`,className:"stf-pf-hint",children:t}):null,n?(0,a.jsx)("p",{id:`${e}-err`,className:"stf-pf-err",children:n}):null]})}function er({segs:e,total:i,uid:t,label:s}){let r=e=>8+(i>0?e/i*624:0),n=0;return(0,a.jsxs)("svg",{viewBox:"0 0 640 96",className:"stf-bar",role:"img","aria-label":s,focusable:"false",children:[(0,a.jsxs)("defs",{children:[(0,a.jsx)("pattern",{id:`${t}-h`,width:"5",height:"5",patternUnits:"userSpaceOnUse",patternTransform:"rotate(45)",children:(0,a.jsx)("line",{x1:"0",y1:"0",x2:"0",y2:"5",className:"stf-c-hatchline"})}),(0,a.jsx)("pattern",{id:`${t}-hi`,width:"6",height:"6",patternUnits:"userSpaceOnUse",patternTransform:"rotate(-45)",children:(0,a.jsx)("line",{x1:"0",y1:"0",x2:"0",y2:"6",className:"stf-c-hatchline stf-c-hatchline--ink"})}),(0,a.jsx)("marker",{id:`${t}-a`,viewBox:"0 0 10 10",refX:"10",refY:"5",markerWidth:"7",markerHeight:"7",orient:"auto-start-reverse",children:(0,a.jsx)("path",{d:"M0 1.5 10 5 0 8.5z",className:"stf-c-arrow"})})]}),(0,a.jsx)("line",{x1:8,x2:8,y1:10,y2:40,className:"stf-c-ext"}),(0,a.jsx)("line",{x1:632,x2:632,y1:10,y2:40,className:"stf-c-ext"}),(0,a.jsx)("line",{x1:8,x2:632,y1:18,y2:18,className:"stf-c-dim",markerStart:`url(#${t}-a)`,markerEnd:`url(#${t}-a)`}),e.map((e,i)=>{let s=r(n),o=r(n+=Math.max(0,e.v)),l="hatch"===e.cls?`url(#${t}-h)`:"hatch-ink"===e.cls?`url(#${t}-hi)`:void 0;return(0,a.jsx)("rect",{x:s,y:36,width:Math.max(0,o-s),height:40,className:`stf-bar-seg stf-bar-seg--${e.cls}`,fill:l},i)}),(0,a.jsx)("rect",{x:8,y:36,width:624,height:40,className:"stf-bar-frame"})]})}function en(){let e=(0,t.useId)().replace(/:/g,""),[i,s]=(0,t.useState)("300000"),[r,n]=(0,t.useState)("450000"),[o,l]=(0,t.useState)("40"),c=et(i),d=et(r),h=et(o),m=!Number.isFinite(c)||c<0?"Enter an amount of 0 or more.":void 0,p=!Number.isFinite(d)||d<0?"Enter an amount of 0 or more.":void 0,g=!Number.isFinite(h)||h<0||h>100?"Enter a drop from 0 to 100.":void 0,v=!m&&!p&&!g&&c+d>0,u=v?c+d:0,b=v?c/u:0,f=v?h/100*c:0,x=u-f;return(0,a.jsxs)("div",{className:"stf-check-tool",children:[(0,a.jsxs)("form",{className:"stf-p-inputs",onSubmit:e=>e.preventDefault(),"aria-label":"Concentration check inputs",children:[(0,a.jsx)("p",{className:"stf-label stf-p-inputs-h",children:"Inputs"}),(0,a.jsx)(es,{id:`${e}-s`,label:"Employer stock you hold ($)",hint:"Vested shares, at today's price.",value:i,onChange:s,error:m}),(0,a.jsx)(es,{id:`${e}-o`,label:"Everything else you have invested ($)",value:r,onChange:n,error:p}),(0,a.jsx)(es,{id:`${e}-d`,label:(0,a.jsxs)(a.Fragment,{children:["Hypothetical drop in the share price (%) ",(0,a.jsx)("span",{className:"stf-tag",children:"Assumption"})]}),hint:"A number you choose to test against, not a forecast.",value:o,onChange:l,error:g,suffix:"%"})]}),(0,a.jsxs)("div",{className:"stf-p-out",children:[(0,a.jsx)(er,{uid:e,total:u,label:v?`Bar: employer stock ${N(c)} of ${N(u)} total, ${(100*b).toFixed(1)}%. A ${h}% drop removes ${N(f)}.`:"Enter valid amounts to draw the bar.",segs:[{v:f,cls:"hatch"},{v:Math.max(0,c-f),cls:"hatch-ink"},{v:d,cls:"plain"}]}),(0,a.jsxs)("ul",{className:"stf-legend","aria-label":"Bar key",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-key stf-key--band","aria-hidden":!0})," Lost in the drop"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-key stf-key--ink","aria-hidden":!0})," Employer stock left"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-key stf-key--plain","aria-hidden":!0})," Everything else"]})]}),(0,a.jsxs)("dl",{className:"stf-readout","aria-live":"polite",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Share of what you own in employer stock"}),(0,a.jsx)("dd",{children:v?`${(100*b).toFixed(1)}%`:"—"})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("dt",{children:["Loss from a ",Number.isFinite(h)?h:"—","% drop"]}),(0,a.jsx)("dd",{children:v?N(f):"—"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"That loss as a share of the total"}),(0,a.jsx)("dd",{children:v?`${(f/u*100).toFixed(1)}%`:"—"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Total after the drop"}),(0,a.jsx)("dd",{children:v?N(x):"—"})]})]}),(0,a.jsxs)("div",{className:"stf-method",children:[(0,a.jsx)("h3",{id:`${e}-m`,className:"stf-method-h",children:"Method"}),(0,a.jsxs)("ul",{className:"stf-formulas",children:[(0,a.jsxs)("li",{children:["Share ",(0,a.jsx)("code",{children:"= S ÷ (S + O)"})]}),(0,a.jsxs)("li",{children:["Loss ",(0,a.jsx)("code",{children:"= S × d"}),"; as a share of the total ",(0,a.jsx)("code",{children:"= S × d ÷ (S + O)"})]})]}),(0,a.jsxs)("p",{children:[(0,a.jsx)("code",{children:"S"})," is employer stock, ",(0,a.jsx)("code",{children:"O"})," everything else, ",(0,a.jsx)("code",{children:"d"})," the drop you enter. The rest of your holdings are held still, which a real market rarely does. Your paycheck comes from the same employer, so a drop can arrive with a job risk this bar does not show."]})]})]})]})}function eo(){let e=(0,t.useId)().replace(/:/g,""),[i,s]=(0,t.useState)("72000"),[r,n]=(0,t.useState)("24500"),[o,l]=(0,t.useState)("12000"),c=et(i),d=et(r),h=et(o),m=!Number.isFinite(c)||c<=0?"Enter a limit above 0.":void 0,p=!Number.isFinite(d)||d<0?"Enter an amount of 0 or more.":void 0,g=!Number.isFinite(h)||h<0?"Enter an amount of 0 or more.":void 0,v=!m&&!p&&!g,u=v?Math.max(0,c-d-h):0,b=v&&d+h>c;return(0,a.jsxs)("div",{className:"stf-check-tool",children:[(0,a.jsxs)("form",{className:"stf-p-inputs",onSubmit:e=>e.preventDefault(),"aria-label":"After-tax 401(k) headroom inputs",children:[(0,a.jsx)("p",{className:"stf-label stf-p-inputs-h",children:"Inputs"}),(0,a.jsx)(es,{id:`${e}-l`,label:"Total contribution limit for the year ($)",hint:"Default: the IRS 2026 limit on everything added to one person's 401(k), under age 50. Check irs.gov and your plan.",value:i,onChange:s,error:m}),(0,a.jsx)(es,{id:`${e}-d`,label:"Your own pre-tax and Roth deferrals ($)",hint:"Default: the IRS 2026 employee deferral limit.",value:r,onChange:n,error:p}),(0,a.jsx)(es,{id:`${e}-e`,label:"Employer match and other employer money ($)",hint:"An example amount. Use your own.",value:o,onChange:l,error:g})]}),(0,a.jsxs)("div",{className:"stf-p-out",children:[(0,a.jsx)(er,{uid:e,total:v?Math.max(c,d+h):0,label:v?`Bar: deferrals ${N(d)}, employer ${N(h)}, after-tax room ${N(u)}, against a limit of ${N(c)}
21370.`:"Enter valid amounts to draw the bar.",segs:[{v:v?d:0,cls:"ink"},{v:v?h:0,cls:"hatch-ink"},{v:u,cls:"hatch"}]}),(0,a.jsxs)("ul",{className:"stf-legend","aria-label":"Bar key",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-key stf-key--solid","aria-hidden":!0})," Your deferrals"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-key stf-key--ink","aria-hidden":!0})," Employer money"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-key stf-key--band","aria-hidden":!0})," Room for after-tax contributions"]})]}),(0,a.jsxs)("dl",{className:"stf-readout","aria-live":"polite",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Room for after-tax contributions"}),(0,a.jsx)("dd",{children:v?N(u):"—"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Used by deferrals and employer money"}),(0,a.jsx)("dd",{children:v?N(d+h):"—"})]})]}),b?(0,a.jsx)("p",{className:"stf-p-stale",children:"Deferrals and employer money already exceed the limit you entered, so there is no room."}):null,(0,a.jsxs)("div",{className:"stf-method",children:[(0,a.jsx)("h3",{id:`${e}-m`,className:"stf-method-h",children:"Method"}),(0,a.jsx)("ul",{className:"stf-formulas",children:(0,a.jsxs)("li",{children:["Room ",(0,a.jsx)("code",{children:"= max(0, limit − deferrals − employer)"})]})}),(0,a.jsx)("p",{children:"The room only helps if your plan accepts after-tax contributions and lets you convert them to Roth, in the plan or by withdrawal. Catch-up contributions for people 50 and over are separate and not shown."})]})]})]})}let el=(e,a)=>/^https?:|^#/.test(a)?a:w(e.siteBasePath,a);function ec({ctx:e,title:t,lede:s,ctas:r}){return(0,a.jsxs)("header",{className:"stf-phead",children:[(0,a.jsxs)("p",{className:"stf-phead-no","aria-hidden":!0,children:["Sheet ",y(e.page.slug)]}),(0,a.jsx)("h1",{className:"stf-h1 stf-h1--page",children:t}),s?(0,a.jsx)("p",{className:"stf-lede",children:s}):null,r&&r.filter(Boolean).length?(0,a.jsx)("div",{className:"stf-hero-cta",children:r.filter(Boolean).map((t,s)=>(0,a.jsx)(i.default,{href:el(e,t.href),className:0===s?"stf-btn stf-btn--ink":"stf-btn stf-btn--line",children:t.label},t.href))}):null]})}function ed({children:e,id:i,label:t,labelledBy:s,tone:r}){return(0,a.jsx)("section",{id:i,"aria-label":s?void 0:t,"aria-labelledby":s,className:`stf-sec${r?` stf-sec--${r}`:""}`,children:e})}function eh({title:e,body:i,id:t}){return(0,a.jsxs)(a.Fragment,{children:[e?(0,a.jsx)("h2",{id:t,className:"stf-h2",children:e}):null,i?(0,a.jsx)("p",{className:"stf-body",children:i}):null]})}function em({block:e,ctx:i}){return e.fields.some(e=>"crd_number"===e.name)?(0,a.jsx)(ed,{id:"apply",labelledBy:"stf-apply-h",tone:"form",children:(0,a.jsxs)("div",{className:"stf-form-grid",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{id:"stf-apply-h",className:"stf-h2",children:e.title}),e.body?(0,a.jsx)("p",{className:"stf-body",children:e.body}):null]}),(0,a.jsx)(Q,{variant:"advisor",block:e,siteKey:i.siteKey,siteName:i.siteName,pageSlug:i.page.slug,pageTitle:i.page.title})]})}):(0,a.jsx)(ed,{id:"advisor",labelledBy:"stf-adv-h",tone:"form",children:(0,a.jsxs)("div",{className:"stf-form-grid",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{id:"stf-adv-h",className:"stf-h2",tabIndex:-1,"data-stf-form-top":!0,children:e.title}),(0,a.jsxs)("ol",{className:"stf-seq stf-seq--stack",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-ball","aria-hidden":!0,children:"1"}),(0,a.jsx)("p",{children:"Answer four short steps. Ranges are fine for money questions."})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-ball","aria-hidden":!0,children:"2"}),(0,a.jsx)("p",{children:"We review your answers and contact you to confirm what you need."})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-ball","aria-hidden":!0,children:"3"}),(0,a.jsxs)("p",{children:["We match you with a licensed financial advisor who specializes in ",l,". You decide what happens next."]})]})]})]}),(0,a.jsx)(Q,{block:e,siteKey:i.siteKey,siteName:i.siteName,pageSlug:i.page.slug,pageTitle:i.page.title,presetTopic:i.topic})]})})}function ep({ctx:e,topic:t,text:s,cta:r}){return(0,a.jsxs)("div",{className:"stf-ask",children:[(0,a.jsx)("p",{children:s}),e.hasForm?(0,a.jsx)("button",{type:"button",className:"stf-btn stf-btn--ink",onClick:()=>e.ask(t),children:r??"Get matched with an advisor"}):(0,a.jsx)(i.default,{href:w(e.siteBasePath,"/contact"),className:"stf-btn stf-btn--ink",children:r??"Get matched with an advisor"})]})}function eg({items:e}){return(0,a.jsx)("ol",{className:"stf-callist stf-callist--two",children:e.map((e,i)=>(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-ball","aria-hidden":!0,
21370children:i+1}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"stf-h3",children:e.heading}),(0,a.jsx)("p",{children:e.body})]})]},e.heading))})}function ev({block:e,ctx:t,hid:s}){switch(e.type){case"story":return(0,a.jsxs)(ed,{labelledBy:e.title?s:void 0,label:e.eyebrow,children:[(0,a.jsx)(eh,{id:s,title:e.title,body:e.body}),e.highlights?.length?(0,a.jsx)("ol",{className:"stf-notes",children:e.highlights.map(e=>(0,a.jsx)("li",{children:e},e))}):null]});case"services":return(0,a.jsxs)(ed,{labelledBy:e.title?s:void 0,label:e.eyebrow,children:[(0,a.jsx)(eh,{id:s,title:e.title,body:e.body}),(0,a.jsx)(eg,{items:e.items.map(e=>({heading:e.title,body:e.description}))})]});case"split-panel":return(0,a.jsxs)(ed,{labelledBy:e.title?s:void 0,label:e.eyebrow,children:[(0,a.jsx)(eh,{id:s,title:e.title,body:e.body}),(0,a.jsx)(eg,{items:e.panels})]});case"team":return(0,a.jsxs)(ed,{labelledBy:e.title?s:void 0,label:e.eyebrow,children:[(0,a.jsx)(eh,{id:s,title:e.title}),(0,a.jsx)(eg,{items:e.people.map(e=>({heading:`${e.name}, ${e.role}`,body:e.bio}))})]});case"faq":return(0,a.jsxs)(ed,{labelledBy:e.title?s:void 0,label:e.eyebrow,children:[(0,a.jsx)(eh,{id:s,title:e.title}),(0,a.jsx)("div",{className:"stf-faq",children:e.items.map(e=>(0,a.jsxs)("details",{children:[(0,a.jsx)("summary",{children:e.question}),(0,a.jsx)("p",{children:e.answer})]},e.question))})]});case"cta-band":return(0,a.jsx)(ed,{labelledBy:e.title?s:void 0,label:e.eyebrow,children:(0,a.jsxs)("div",{className:"stf-revbox",children:[(0,a.jsx)("p",{className:"stf-revbox-tag","aria-hidden":!0,children:"Note"}),(0,a.jsx)("div",{children:(0,a.jsx)(eh,{id:s,title:e.title,body:e.body})}),(0,a.jsx)(i.default,{href:el(t,e.primaryCta.href),className:"stf-btn stf-btn--red",children:e.primaryCta.label})]})});case"blog-feed":return(0,a.jsxs)(ed,{labelledBy:e.title?s:void 0,label:e.eyebrow,children:[(0,a.jsx)(eh,{id:s,title:e.title,body:e.body}),(0,a.jsx)("ol",{className:"stf-dlist",children:e.posts.map(e=>{let s=e.href.replace(/^https?:\/\/[^/]+/,""),r=d(s.replace(/^\/blog\//,""));return(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-dlist-no","aria-hidden":!0,children:y(s)}),(0,a.jsxs)("div",{children:[(0,a.jsx)(i.default,{href:el(t,e.href),className:"stf-dlist-t",children:e.title}),(0,a.jsx)("p",{className:"stf-dlist-ex",children:e.excerpt})]}),(0,a.jsx)("p",{className:"stf-dlist-meta",children:r?`${r.pillar} \xb7 ${r.read} min`:""})]},e.href)})})]});case"html-content":return(0,a.jsx)(ed,{label:"Text",children:(0,a.jsx)("div",{className:"stf-prose",dangerouslySetInnerHTML:{__html:e.html}})});case"lead-form":return(0,a.jsx)(em,{block:e,ctx:t});case"hero":case"finance-calculator":return null;default:if(!e.title&&!e.body)return null;return(0,a.jsx)(ed,{labelledBy:e.title?s:void 0,label:"Section",children:(0,a.jsx)(eh,{id:s,title:e.title,body:e.body})})}}let eu={"rsu-vesting-tax-withholding-shortfalls":{title:"Vesting plotter",blurb:"See each vest's gross value and what a flat rate withholds from it.",to:"/tools#plotter"},"negotiating-equity-refreshers":{title:"Vesting plotter",blurb:"Plot a refresher's schedule next to the grant you already have.",to:"/tools#plotter"},"comparing-faang-style-benefits-packages":{title:"Vesting plotter",blurb:"Compare how two grants vest, cliff and all.",to:"/tools#plotter"},"mega-backdoor-roth-401k-mechanics":{title:"After-tax 401(k) headroom",blurb:"Find the room between your plan's limit and what already goes in.",to:"/tools#headroom"},"target-date-funds-vs-self-directed-401k-tech":{title:"Concentration check",blurb:"How much of what you own is your employer, and what a drop would take.",to:"/tools#concentration"}};function eb({ctx:e,prepared:t}){let s,{page:r}=e,n=r.blocks.find(e=>"hero"===e.type),o=r.blocks.find(e=>"faq"===e.type),h=r.blocks.find(e=>"lead-form"===e.type),m=r.slug.replace(/^\/blog\//,""),p=d(m),g=u[m]??v,b=eu[m],f=c.filter(e=>e.slug!==m).sort((e,a)=>Number(a.pillar===p?.pillar)-Number(e.pillar===p?.pillar)).slice(0,3);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("header",{className:"stf-phead stf-phead--article",children:[(0,a.jsxs)("p",{className:"stf-crumb",children:[(0,a.jsx)(i.default,{href:w(e.siteBasePath,"/blog"),className:"stf-link",children:"Guides"}
21370)," ",(0,a.jsx)("span",{"aria-hidden":!0,children:"/"})," ",n?.eyebrow??p?.pillar]}),(0,a.jsx)("h1",{className:"stf-h1 stf-h1--article",children:r.title}),n?.body?(0,a.jsx)("p",{className:"stf-lede",children:n.body}):null,(0,a.jsxs)("p",{className:"stf-meta",children:[(0,a.jsxs)("span",{children:["Sheet ",y(r.slug)]}),(0,a.jsxs)("span",{children:[p?.read??4," min read"]}),(0,a.jsx)("span",{children:"Education, not advice"})]})]}),(0,a.jsxs)("div",{className:"stf-article",children:[(0,a.jsxs)("div",{className:"stf-article-main",children:[(0,a.jsxs)("details",{className:"stf-toc-inline",children:[(0,a.jsxs)("summary",{children:["On this sheet (",t.toc.length," sections)"]}),(0,a.jsx)("ol",{children:t.toc.map((e,i)=>(0,a.jsx)("li",{children:(0,a.jsxs)("a",{href:`#${e.id}`,className:"stf-link",children:[i+1,".0 ",e.text]})},e.id))})]}),(0,a.jsx)("div",{className:"stf-prose stf-prose--article",dangerouslySetInnerHTML:{__html:t.html}}),(0,a.jsx)(ep,{ctx:e,topic:g,text:`Reading is the first step. A licensed financial advisor who specializes in ${l} can apply this to your own grant, income and accounts.`,cta:"Take this to an advisor"})]}),(0,a.jsxs)("div",{className:"stf-margin",children:[(0,a.jsxs)("div",{className:"stf-margin-note",children:[(0,a.jsx)("p",{className:"stf-label",children:"Margin note"}),(0,a.jsx)("p",{className:"stf-margin-t",children:"Want someone to check your numbers?"}),(0,a.jsxs)("p",{children:["We contact you to confirm what you need, then match you with a licensed financial advisor who specializes in ",l,"."]}),(0,a.jsx)("button",{type:"button",className:"stf-btn stf-btn--red stf-btn--sm",onClick:()=>e.ask(g),children:"Find an advisor"})]}),b?(0,a.jsxs)("div",{className:"stf-margin-note stf-margin-note--tool",children:[(0,a.jsx)("p",{className:"stf-label",children:"See also"}),(0,a.jsx)("p",{className:"stf-margin-t",children:(0,a.jsx)(i.default,{href:(s=b.to,w(e.siteBasePath,s)),className:"stf-link",children:b.title})}),(0,a.jsx)("p",{children:b.blurb})]}):null]})]}),o?(0,a.jsx)(ev,{block:o,ctx:e,hid:"stf-faq-h"}):null,(0,a.jsxs)(ed,{labelledBy:"stf-related-h",children:[(0,a.jsx)("h2",{id:"stf-related-h",className:"stf-h2",children:"Related sheets"}),(0,a.jsx)("ol",{className:"stf-dlist",children:f.map(t=>{let s;return(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-dlist-no","aria-hidden":!0,children:y(`/blog/${t.slug}`)}),(0,a.jsxs)("div",{children:[(0,a.jsx)(i.default,{href:(s=`/blog/${t.slug}`,w(e.siteBasePath,s)),className:"stf-dlist-t",children:t.title}),(0,a.jsx)("p",{className:"stf-dlist-ex",children:t.excerpt})]}),(0,a.jsxs)("p",{className:"stf-dlist-meta",children:[t.pillar," · ",t.read," min"]})]},t.slug)})})]}),h?(0,a.jsx)(em,{block:h,ctx:e}):null]})}function ef({ctx:e}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(ed,{id:"plotter",labelledBy:"stf-t1",children:[(0,a.jsxs)("header",{className:"stf-sec-head",children:[(0,a.jsx)("p",{className:"stf-secno","aria-hidden":!0,children:"1"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{id:"stf-t1",className:"stf-h2",children:"Vesting plotter"}),(0,a.jsx)("p",{className:"stf-sec-lede",children:"Grant size, price per unit, schedule and a withholding rate in. A vest calendar out: every vest’s gross value, the estimated withholding, and totals. Illustration only."})]})]}),(0,a.jsx)(K,{tableOpen:!0}),(0,a.jsx)(ep,{ctx:e,topic:h,text:"Unsure whether the flat rate covers your real tax? An advisor who works with engineers can model it with your numbers.",cta:"Ask an advisor about RSUs"}),(0,a.jsx)("p",{className:"stf-more",children:(0,a.jsx)(i.default,{href:w(e.siteBasePath,"/blog/rsu-vesting-tax-withholding-shortfalls"),className:"stf-link",children:"Read: RSU Vesting and the Tax-Withholding Shortfall Nobody Warns You About"})})]}),(0,a.jsxs)(ed,{id:"concentration",labelledBy:"stf-t2",children:[(0,a.jsxs)("header",{className:"stf-sec-head",children:[(0,a.jsx)("p",{className:"stf-secno","aria-hidden":!0,children:"2"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{id:"stf-t2",className:"stf-h2",children:"Concentration check"}),(0,a.jsx)("p",{className:"stf-sec-lede",children:"How much of what you own is your employer’s stock, and what a price drop you choose would take with it."})]})]}),(0,a.jsx)(en,{}
21370),(0,a.jsx)(ep,{ctx:e,topic:p,text:"Too much in one stock is a common reason engineers ask for an advisor.",cta:"Ask about concentration"}),(0,a.jsx)("p",{className:"stf-more",children:(0,a.jsx)(i.default,{href:w(e.siteBasePath,"/blog/target-date-funds-vs-self-directed-401k-tech"),className:"stf-link",children:"Read: Target-Date Funds vs. Self-Directed 401(k) Allocation for Tech-Industry Risk Profiles"})})]}),(0,a.jsxs)(ed,{id:"headroom",labelledBy:"stf-t3",children:[(0,a.jsxs)("header",{className:"stf-sec-head",children:[(0,a.jsx)("p",{className:"stf-secno","aria-hidden":!0,children:"3"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{id:"stf-t3",className:"stf-h2",children:"After-tax 401(k) headroom"}),(0,a.jsx)("p",{className:"stf-sec-lede",children:"The space between your plan’s total limit and what you and your employer already put in."})]})]}),(0,a.jsx)(eo,{}),(0,a.jsx)(ep,{ctx:e,topic:g,text:"Whether a mega backdoor Roth is worth it depends on your plan's rules and your cash flow.",cta:"Ask about the mega backdoor Roth"}),(0,a.jsx)("p",{className:"stf-more",children:(0,a.jsx)(i.default,{href:w(e.siteBasePath,"/blog/mega-backdoor-roth-401k-mechanics"),className:"stf-link",children:"Read: Mega Backdoor Roth 401(k) Mechanics, Step by Step"})})]})]})}function ex({ctx:e}){return(0,a.jsx)(a.Fragment,{children:b.map((t,s)=>{let r;return(0,a.jsxs)(ed,{labelledBy:`stf-g-${t.id}`,children:[(0,a.jsxs)("header",{className:"stf-sec-head",children:[(0,a.jsx)("p",{className:"stf-secno","aria-hidden":!0,children:s+1}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{id:`stf-g-${t.id}`,className:"stf-h2",children:t.name}),(0,a.jsx)("p",{className:"stf-sec-lede",children:t.blurb})]})]}),(0,a.jsx)("ol",{className:"stf-dlist",children:t.slugs.map(t=>{let s,r=d(t);return(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-dlist-no","aria-hidden":!0,children:y(`/blog/${t}`)}),(0,a.jsxs)("div",{children:[(0,a.jsx)(i.default,{href:(s=`/blog/${t}`,w(e.siteBasePath,s)),className:"stf-dlist-t",children:r.title}),(0,a.jsx)("p",{className:"stf-dlist-ex",children:r.excerpt})]}),(0,a.jsxs)("p",{className:"stf-dlist-meta",children:[r.read," min"]})]},t)})}),(0,a.jsxs)("p",{className:"stf-more",children:[t.tool?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(i.default,{href:(r=t.tool.to,w(e.siteBasePath,r)),className:"stf-link",children:["Tool: ",t.tool.label]}),(0,a.jsx)("span",{"aria-hidden":!0,children:" · "})]}):null,(0,a.jsxs)("button",{type:"button",className:"stf-link stf-link--btn",onClick:()=>e.ask(t.topic),children:["Talk to an advisor about ",t.name.toLowerCase()]})]})]},t.id)})})}function ey({page:e,siteBasePath:i="",siteKey:s,siteName:r,after:n}){var o;let l,c,d,[h,m]=(0,t.useState)(""),p=e.blocks,g={siteBasePath:i,siteKey:s,siteName:r,page:e,topic:h,hasForm:p.some(e=>"lead-form"===e.type&&!e.fields.some(e=>"crd_number"===e.name)),ask:e=>{m(e),_()}},v=p.find(e=>"html-content"===e.type),u=e.slug.startsWith("/blog/")&&!!v,b=u&&v?(o=v.html,c=0,d=[],{html:o.replace(/<h2>([\s\S]*?)<\/h2>/g,(e,a)=>{c+=1;let i=`s${c}`;return d.push({id:i,text:a.replace(/<[^>]+>/g,"").trim()}),`<h2 id="${i}"><span class="stf-secnum" aria-hidden="true">${c}.0</span> ${a}</h2>`}),toc:d}):void 0,f=p.find(e=>"hero"===e.type),x=f||p[0]?.type!=="story"?void 0:p[0],y=p.filter(e=>e!==f&&e!==x),w=f?.title??x?.title??e.title,k=f?.body??x?.body??e.summary,j="NTS";if(u&&b)l=(0,a.jsx)(eb,{ctx:g,prepared:b});else{"/tools"===e.slug&&(w="Vesting plotter and tools",k="Three calculators that run in your browser. Each states its formula, labels its assumptions, and draws its result. Nothing you type is sent anywhere.",j="1:1, your inputs",y=y.filter(e=>"lead-form"===e.type)),"/services"===e.slug&&(w="What the desk covers",k="Four areas, ten guides, three tools. Each area ends with a way to talk to a licensed financial advisor who specializes in it.",y=y.filter(e=>"services"!==e.type));let i="/contact"===e.slug,t=i?y.find(e=>"story"===e.type):void 0,n=i?y.find(e=>"lead-form"===e.type):void 0,o=i&&t&&n?y.filter(e=>e!==t&&e!==n):y;l=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(ec,{ctx:g,title:w,lede:k,ctas:f?[f.primaryCta,f.secondaryCta].filter(e=>e&&"/contact"!==e.href):void 0}),x?.highlights?.length?(0,a.jsx)(ed,{label:"Key points",children:(0,a.jsx)("ol",{className:"stf-notes",children:x.highlights.map(e=>(0,a.jsx)("li",{children:e},e))})}):null,"/tools"===e.slug?(0,a.jsx)(ef,{ctx:g}):null,"/services"===e.slug?(0,a.jsx)(ex,{ctx:g}):null,i&&t&&n?(0,a.jsx)(ed,{id:"advisor",labelledBy:"stf-adv-h",tone:"form",children:(0,a.jsxs)("div",{className:"stf-form-grid",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{id:"stf-adv-h",className:"stf-h2",tabIndex:-1,"data-stf-form-top":!0,
21370children:t.title}),(0,a.jsx)("ol",{className:"stf-seq stf-seq--stack",children:t.highlights.map((e,i)=>(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"stf-ball","aria-hidden":!0,children:i+1}),(0,a.jsx)("p",{children:e})]},e))})]}),(0,a.jsx)(Q,{block:n,siteKey:s,siteName:r,pageSlug:e.slug,pageTitle:e.title,presetTopic:h})]})}):null,o.map((e,i)=>(0,a.jsx)(ev,{block:e,ctx:g,hid:`stf-b${i}`},`${e.type}-${i}`))]})}return(0,a.jsxs)($,{siteBasePath:i,currentSlug:e.slug,title:u?e.title:w,scale:j,toc:b?.toc,children:[l,n?(0,a.jsx)("div",{className:"stf-after",children:n}):null]})}e.s(["ContentPage",0,function(e){return(0,a.jsx)(ey,{...e})},"HomePage",0,function(e){let i=e.advisorBlock;return(0,a.jsx)(ei,{siteBasePath:e.siteBasePath,advisorBlock:i})}],333137)},220964,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645),s=e.i(525320);let r="aviationfinancialadvisor.com",n=(0,s.advisorNiche)(r),o=n.specialty;function l(e){return n.topics.includes(e)?e:""}let c={plan:l("Airline retirement plan and pension choices"),bridge:l("Retirement before Social Security begins"),crewTax:l("Per diem, commuting and crew tax questions"),medical:l("Loss-of-medical and income protection"),pay:l("A seniority, contract or pay change"),review:l("A full portfolio and wealth review")},d=[{gate:"C",name:"Career stages",blurb:"Seniority steps, the age-65 limit, furloughs, the regional-to-major move and the military transition."},{gate:"B",name:"Benefits & insurance",blurb:"Per diem at tax time, loss-of-medical cover and the elections buried in a union contract."},{gate:"I",name:"Investing",blurb:"Where you count as living for tax when your schedule crosses borders."}],h=[{slug:"faa-age-65-mandatory-retirement-drawdown",flight:"AW 065",gate:"C1",concourse:"C",pillar:"Career stages",title:"Planning Your Drawdown Around FAA Age-65 Mandatory Retirement",excerpt:"Age 65 is a hard stop for Part 121 pilots, not a soft target. That certainty is a planning advantage most professions never get — if you use it early enough.",remarks:"Bridge years",read:4,topic:c.bridge,tool:"bridge"},{slug:"airline-pension-401k-b-fund-basics",flight:"AW 101",gate:"C2",concourse:"C",pillar:"Career stages",title:"Airline Pension and 401(k) Structures: Understanding the B-Fund Basics",excerpt:"Most legacy-carrier retirement contracts split into an A-fund (your own deferrals) and a B-fund (a non-elective employer contribution). Knowing which is which changes how you plan.",remarks:"A-fund · B-fund",read:4,topic:c.plan},{slug:"crew-per-diem-tax-treatment",flight:"AW 214",gate:"B1",concourse:"B",pillar:"Benefits & insurance",title:"How Per Diem Actually Works at Tax Time for Flight Crew",excerpt:"Per diem feels like free money on a trip. At tax time it is a specific accountable-plan mechanism with real edge cases, especially for reserve and international crew.",remarks:"Accountable plans",read:4,topic:c.crewTax},{slug:"disability-loss-of-medical-insurance-pilots",flight:"AW 227",gate:"B2",concourse:"B",pillar:"Benefits & insurance",title:"Loss-of-Medical Insurance: The Coverage Gap Most Pilots Underestimate",excerpt:"A failed medical certificate can end your income overnight. Group long-term disability at most carriers was never built to replace a pilot's full earning power.",remarks:"Loss of medical",read:4,topic:c.medical},{slug:"seniority-based-pay-progression-planning",flight:"AW 330",gate:"C3",concourse:"C",pillar:"Career stages",title:"Seniority-Based Pay Progression and What It Means for Your Financial Plan",excerpt:"Your pay curve is not smooth — it moves in steps tied to seniority, aircraft, and seat, and it can reset entirely after a merger. Generic income-growth assumptions do not apply.",remarks:"Pay steps",read:4,topic:c.pay},{slug:"furlough-financial-preparedness",flight:"AW 347",gate:"C4",concourse:"C",pillar:"Career stages",title:"Furlough-Proofing Your Finances Before You Need To",excerpt:"Furloughs are cyclical, contractual, and recorded in seniority-list history going back decades. Treating one as a black-swan event is a planning mistake.",remarks:"Cash runway",read:4,topic:c.pay,tool:"runway"},{slug:"international-layover-tax-residency",flight:"AW 412",gate:"I1",concourse:"I",pillar:"Investing",title:"International Layovers and Tax Residency: What Aviation Crews Should Know",excerpt:"Frequent international layovers do not usually create foreign tax residency on their own — but the assumptions crew make about where they 'count as living' are often wrong.",remarks:"Residency",read:4,topic:c.crewTax},{slug:"legacy-vs-regional-carrier-compensation-planning",flight:"AW 518",gate:"C5",concourse:"C",pillar:"Career stages",title:"Legacy Carrier vs. Regional Carrier: Comparing Compensation Planning Realities",excerpt:"The pay gap between regionals and majors gets most of the attention. The gap in retirement contribution structure and benefit design matters just as much for long-term planning.",remarks:"Plan design",read:4,topic:c.plan},{slug:"alpa-union-benefit-optimization-basics",flight:"AW 603",gate:"B3",concourse:"B",pillar:"Benefits & insurance",title:"Getting the Most From Your Union Benefit Stack: ALPA Optimization Basics",excerpt:"A pilot union contract is not just a pay scale — it is a bundle of elections, deadlines, and opt-in benefits that quietly expire if you never touch them.",remarks:"Elections · deadlines",read:4,topic:c.plan},{slug:"military-to-commercial-aviation-transition",flight:"AW 736",gate:"C6",concourse:"C",pillar:"Career stages",title:"Transitioning From Military to Commercial Aviation Pay and Benefits",excerpt:"Military pilots trade a defined, predictable pay-and-benefits package for a civilian structure built entirely differently. The transition math is a real project, not a formality.",remarks:"Transition math",read:4,topic:c.pay}];function m(e){return h.find(a=>a.slug===e)}function p(e,a){let i=e&&"/"!==e?e.replace(/\/$/,""):"";return"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}let g=[{slug:"/blog",label:"Briefings"},{slug:"/tools",label:"Tools"},{slug:"/services",label:"Coverage"},{slug:"/about",label:"About"}],v="Altitude Wealth Desk";function u(){let e=document.getElementById("advisor");if(!e)return!1;let a=window.matchMedia("(prefers-reduced-motion: reduce)").matches;return e.scrollIntoView({behavior:a?"auto":"smooth",block:"start"}),!0}
21370function b(e){return`$${Math.round(e).toLocaleString("en-US")}`}let f=[{id:"penalty",age:59.5,ageLabel:"59½",name:"Penalty-free withdrawals",phrase:"penalty-free withdrawals",what:"IRA and 401(k) withdrawals without the 10% additional tax",note:"From 59½ the 10% additional tax on early withdrawals from IRAs and employer plans such as a 401(k) generally no longer applies; ordinary income tax still does. Stopping earlier? One exception covers leaving your employer in or after the year you turn 55, and it applies to that employer's plan, not to an IRA.",source:"Internal Revenue Code section 72(t); IRS Topic 558",certainty:"firm",topic:c.plan},{id:"ss62",age:62,ageLabel:"62",name:"Earliest Social Security",phrase:"the earliest Social Security claim",what:"First age you can claim a retirement benefit",note:"62 is the earliest you can claim a Social Security retirement benefit. Claiming before your full retirement age permanently reduces the monthly amount, so the years between stopping work and claiming are often paid for from savings instead.",source:"Social Security Administration",certainty:"firm",topic:c.bridge},{id:"part121",age:65,ageLabel:"65",name:"Part 121 flying ends",phrase:"the Part 121 limit",what:"Last day as a pilot in Part 121 airline operations",note:"14 CFR 121.383(d) bars anyone who has reached their 65th birthday from serving as a pilot in Part 121 airline operations. Corporate, charter and other flying fall under different rules. Proposals to change the age come up in Congress from time to time, so check the current rule before you plan around it.",source:"14 CFR 121.383(d)",certainty:"check",topic:c.plan,limit:!0},{id:"medicare",age:65,ageLabel:"65",name:"Medicare eligibility",phrase:"Medicare",what:"Health cover from Medicare generally begins",note:"Medicare generally starts at 65. Your initial enrollment period is the seven months around your 65th-birthday month. Stop flying earlier and health cover until 65 has to come from somewhere else, such as retiree medical in your contract, COBRA (generally up to 18 months after leaving a job) or a marketplace plan.",source:"Social Security Administration; Medicare.gov",certainty:"firm",topic:c.bridge},{id:"fra",age:67,ageLabel:"67",name:"Full retirement age",phrase:"full retirement age",what:"Social Security with no early-claiming reduction (born 1960 or later)",note:"Full retirement age is 67 for anyone born in 1960 or later, which includes every pilot still flying Part 121 today. Claim at 67 and the benefit carries no early-claiming reduction. Born before 1960? Your full retirement age is between 66 and 67: your Social Security statement shows it.",source:"Social Security Administration",certainty:"firm",topic:c.bridge},{id:"drc",age:70,ageLabel:"70",name:"Delayed credits stop",phrase:"the last delayed credit",what:"Waiting past 70 no longer raises the benefit",note:"Each year you wait past full retirement age earns delayed retirement credits that raise the monthly benefit, and the credits stop at 70. Waiting longer than 70 gains nothing, so 70 is the far end of any Social Security bridge.",source:"Social Security Administration",certainty:"firm",topic:c.bridge}],x=e=>(e-55)/16*100,y=e=>{let a=Number.isInteger(e)?String(e):e.toFixed(1);return`${a} ${1===e?"year":"years"}`},w=e=>`${Number.isInteger(e)?e:e.toFixed(1)} yr${1===e?"":"s"}`;function _({onAsk:e,askHref:i}){let s=(0,t.useId)().replace(/:/g,""),[r,n]=(0,t.useState)(60),[o,l]=(0,t.useState)(null),c=Math.max(0,62-r),d=Math.max(0,65-r),h=Math.max(0,67-r),m=f.find(e=>e.id===o)??null,p=`Stop flying at ${r}: `+f.filter(e=>"part121"!==e.id).map(e=>e.age-r>0?`${y(e.age-r)} to ${e.phrase} at ${e.ageLabel}`:`${e.phrase} at ${e.ageLabel} already reached`).join("; ")+".";return(0,a.jsxs)("div",{className:"alt-bridge",children:[(0,a.jsxs)("div",{className:"alt-bridge-controls",children:[(0,a.jsxs)("div",{className:"alt-bridge-slider",children:[(0,a.jsx)("label",{htmlFor:`${s}-age`,className:"alt-bridge-label",children:"Age you stop flying"}),(0,a.jsxs)("div",{className:"alt-bridge-range",children:[(0,a.jsx)("output",{htmlFor:`${s}
21370-age`,className:"alt-bridge-age alt-mono","aria-hidden":!0,children:r}),(0,a.jsxs)("div",{className:"alt-range-col",children:[(0,a.jsx)("input",{id:`${s}-age`,type:"range",min:55,max:70,step:1,value:r,"aria-valuetext":`${r} years old`,onChange:e=>n(Number(e.target.value)),className:"alt-range"}),(0,a.jsxs)("div",{className:"alt-range-ends alt-mono","aria-hidden":!0,children:[(0,a.jsx)("span",{children:"55"}),(0,a.jsx)("span",{children:"70"})]})]})]})]}),(0,a.jsxs)("dl",{className:"alt-bridge-readouts",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"To earliest Social Security"}),(0,a.jsx)("dd",{className:"alt-mono",children:c?w(c):"Open"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"To Medicare"}),(0,a.jsx)("dd",{className:"alt-mono",children:d?w(d):"Open"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"To full retirement age"}),(0,a.jsx)("dd",{className:"alt-mono",children:h?w(h):"Reached"})]})]})]}),r>65?(0,a.jsxs)("p",{className:"alt-bridge-warn",children:["Past 65 you cannot serve as a pilot in Part 121 airline operations. Stopping at ",r," assumes corporate, charter or other work: check the rule for the flying you do."]}):r<59.5?(0,a.jsx)("p",{className:"alt-bridge-warn alt-bridge-warn--soft",children:"Before 59½, most IRA and 401(k) withdrawals carry a 10% additional tax unless an exception applies. Open the 59½ marker for the one that often matters to pilots."}):null,(0,a.jsxs)("figure",{className:"alt-bridge-fig",children:[(0,a.jsxs)("figcaption",{className:"alt-bridge-cap",children:[(0,a.jsxs)("span",{className:"alt-mono",children:["Years to bridge from age ",r]}),(0,a.jsxs)("span",{className:"alt-bridge-key","aria-hidden":!0,children:[(0,a.jsx)("i",{className:"k-gap"})," years to cover ",(0,a.jsx)("i",{className:"k-open"})," open when you stop ",(0,a.jsx)("i",{className:"k-over"})," past a limit"]})]}),(0,a.jsxs)("div",{className:"alt-bridge-chart",children:[(0,a.jsxs)("div",{className:"alt-bridge-row alt-bridge-row--axis","aria-hidden":!0,children:[(0,a.jsx)("span",{className:"alt-bridge-name"}),(0,a.jsxs)("div",{className:"alt-bridge-lane",children:[Array.from({length:17},(e,a)=>55+a).map(e=>(0,a.jsx)("span",{className:`alt-tick${e%5==0?" is-major":""}`,style:{left:`${x(e)}%`},children:(0,a.jsx)("span",{className:"alt-mono",children:e})},e)),(0,a.jsxs)("span",{className:"alt-stop-flag alt-mono",style:{left:`${x(r)}%`},children:["Stop ",r]})]}),(0,a.jsx)("span",{className:"alt-bridge-val"})]}),(0,a.jsx)("ol",{className:"alt-bridge-rows",children:f.map(e=>{let i=e.age-r,t=`${s}-note`,n=e.limit?i<0?`${y(-i)} past the limit`:0===i?"at the limit":`${y(i)} of flying left`:i>0?`${y(i)} to bridge`:"open when you stop";return(0,a.jsxs)("li",{className:"alt-bridge-row",children:[(0,a.jsxs)("div",{className:"alt-bridge-name",children:[(0,a.jsx)("span",{className:"alt-bridge-n",children:e.name}),(0,a.jsxs)("span",{className:"alt-bridge-w",children:["Age ",e.ageLabel,"check"===e.certainty?(0,a.jsx)("span",{className:"alt-flag",children:" · check the current rule"}):null]})]}),(0,a.jsxs)("div",{className:"alt-bridge-lane",children:[(0,a.jsx)("span",{className:"alt-lane-stop",style:{left:`${x(r)}%`},"aria-hidden":!0}),i>0?(0,a.jsx)("span",{"aria-hidden":!0,className:`alt-bar ${e.limit?"alt-bar--left":"alt-bar--gap"}`,style:{left:`${x(r)}%`,width:`${x(e.age)-x(r)}%`}}):i<0?(0,a.jsx)("span",{"aria-hidden":!0,className:`alt-bar ${e.limit?"alt-bar--over":"alt-bar--open"}`,style:{left:`${x(e.age)}%`,width:`${x(r)-x(e.age)}%`}}):null,(0,a.jsx)("button",{type:"button",className:`alt-bridge-marker${o===e.id?" is-open":""}`,style:{left:`${x(e.age)}%`},"aria-expanded":o===e.id,"aria-controls":t,"aria-label":`${e.name}, age ${e.ageLabel}: ${n}. ${o===e.id?"Hide":"Show"} note`,onClick:()=>l(a=>a===e.id?null:e.id),children:e.ageLabel})]}),(0,a.jsx)("span",{className:`alt-bridge-val alt-mono${e.limit&&i<0?" is-over":""}`,children:e.limit?i<0?"Past limit":0===i?"Limit":`${w(i)} left`:i>0?w(i):"Open"})]},e.id)})})]}),(0,a.jsx)("p",{className:"alt-bridge-summary","aria-live":"polite",children:p})]}),(0,a.jsx)("div",{id:`${s}-note`,className:"alt-bridge-note",hidden:!m,children:m?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("p",{className:"alt-bridge-note-h",children:[(0,a.jsx)("span",{className:"alt-mono alt-bridge-note-age",children:m.ageLabel})," ",m.name]}),(0,a.jsxs)("p",{className:"alt-bridge-note-tag",children:["firm"===m.certainty?"Rule in force":"Check the current rule"," · Source: ",m.source]}),(0,a.jsx)("p",{children:m.note}),(0,a.jsxs)("p",{children:["From age ",r,":"," ",(0,a.jsx)("strong",{children:m.limit?0>m.age-r?`${y(-(m.age-r))} past this limit`:`${y(m.age-r)} of Part 121 flying left`:m.age-r>0?`${y(m.age-r)} to bridge`:"already open when you stop"}),"."]}),(0,a.jsx)("a",{className:"alt-link alt-link--strong",href:i(m.topic),onClick:a=>{i(m.topic).startsWith("#")&&(a.preventDefault(),e(m.topic))},children:"Talk to an advisor about this"})]}):null}),(0,a.jsx)("p",{className:"alt-fine",children:"Illustration built from the rules named in each note. It shows timing only, never benefit amounts. Your Social Security statement and plan documents have the numbers."})]})}function k({briefings:e,siteBasePath:s,caption:r,flip:n=!1,excerpts:o=!1}){let l=(0,t.useRef)(null);return(0,t.useEffect)(()=>{let e=l.current;if(!n||!e||!("IntersectionObserver"in window)||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let a=e.getBoundingClientRect();if(a.top<window.innerHeight&&a.bottom>0)return;e.classList.add("is-armed");let i=new IntersectionObserver(a=>{a.some(e=>e.isIntersecting)&&(e.classList.add("is-live"),i.disconnect())},{threshold:.15});return i.observe(e),()=>i.disconnect()},[n]),(0,a.jsx)("div",{ref:l,className:"alt-board",children:(0,a.jsxs)("table",{className:"alt-board-table",children:[(0,a.jsx)("caption",{className:"alt-sr",children:r}),(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"col",className:"alt-c-flight",children:"Flight"}),(0,a.jsx)("th",{scope:"col",className:"alt-c-dest",children:"Destination"}),(0,a.jsx)("th",{scope:"col",className:"alt-c-gate",children:"Gate"}),(0,a.jsx)("th",{scope:"col",className:"alt-c-time",children:"Time"}),(0,a.jsx)("th",{scope:"col",className:"alt-c-rem",children:"Remarks"})]})}),(0,a.jsx)("tbody",{children:e.map((e,t)=>(0,a.jsxs)("tr",{style:{"--i":t},children:[(0,a.jsx)("td",{className:"alt-c-flight alt-mono",children:e.flight}),(0,a.jsxs)("td",{className:"alt-c-dest",children:[(0,a.jsx)(i.default,{href:p(s,`/blog/${e.slug}`),className:"alt-board-link",children:e.title}),o?(0,a.jsx)("span",{className:"alt-board-ex",children:e.excerpt}):null]}),(0,a.jsx)("td",{className:"alt-c-gate alt-mono",children:(0,a.jsx)("span",{className:"alt-gate",children:e.gate})}),(0,a.jsxs)("td",{className:"alt-c-time alt-mono",children:[e.read," min"]}),(0,a.jsx)("td",{className:"alt-c-rem alt-mono",children:e.remarks})]},e.slug))})]})})}var j=e.i(600951);function N(){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/aviation/fonts/overpass.woff2"}),(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/aviation/fonts/atkinson-hyperlegible-next.woff2"})]})}let S={up:0,upright:45,right:90,down:180,left:270,upleft:315};function A({dir:e="right",size:i=22}){return(0,a.jsx)("svg",{className:"alt-arrow",width:i,height:i,viewBox:"0 0 24 24","aria-hidden":!0,focusable:"false",style:{transform:`rotate(${S[e]}deg)`}
21370,children:(0,a.jsx)("path",{d:"M12 2 3.5 11h5.5v11h6V11h5.5z",fill:"currentColor"})})}function z(){return(0,a.jsx)("span",{className:"alt-mark","aria-hidden":!0,children:"AWD"})}function C({children:e}){return(0,a.jsxs)("div",{className:"alt-root shell-alt",children:[(0,a.jsx)(N,{}),(0,a.jsx)("a",{className:"alt-skip",href:"#main-content",children:"Skip to main content"}),e]})}function M({siteBasePath:e,currentSlug:t}){let{open:s,toggle:r}=(0,j.useMobileMenu)(),n="/"===t?"#advisor":p(e,"/contact"),o=e=>t===e||"/blog"===e&&t.startsWith("/blog/");return(0,a.jsxs)("header",{className:"alt-header",children:[(0,a.jsxs)("div",{className:"alt-header-inner",children:[(0,a.jsxs)(i.default,{href:p(e,"/"),className:"alt-brand","aria-label":`${v}, home`,children:[(0,a.jsx)(z,{}),(0,a.jsx)("span",{className:"alt-brand-name",children:v})]}),(0,a.jsx)("nav",{className:"alt-nav","aria-label":"Primary",children:g.map(t=>(0,a.jsx)(i.default,{href:p(e,t.slug),className:"alt-nav-link","aria-current":o(t.slug)?"page":void 0,children:t.label},t.slug))}),(0,a.jsxs)("div",{className:"alt-header-actions",children:[(0,a.jsx)(i.default,{href:n,className:"alt-btn alt-btn--mandatory alt-btn--sm alt-header-cta",children:"Find an advisor"}),(0,a.jsxs)("button",{type:"button",className:"alt-menu-btn","aria-expanded":s,"aria-controls":"alt-mobile-menu",onClick:r,children:[(0,a.jsx)("span",{className:"alt-menu-icon","aria-hidden":!0}),(0,a.jsx)("span",{children:s?"Close":"Menu"})]})]})]}),(0,a.jsxs)("nav",{id:"alt-mobile-menu",className:"alt-mobile","aria-label":"Mobile",hidden:!s,children:[(0,a.jsxs)("ul",{children:[g.map(t=>(0,a.jsx)("li",{children:(0,a.jsxs)(i.default,{href:p(e,t.slug),className:"alt-mobile-link","aria-current":o(t.slug)?"page":void 0,children:[(0,a.jsx)("span",{children:t.label}),(0,a.jsx)(A,{dir:"right",size:18})]})},t.slug)),(0,a.jsx)("li",{children:(0,a.jsxs)(i.default,{href:p(e,"/contact"),className:"alt-mobile-link",children:[(0,a.jsx)("span",{children:"Contact"}),(0,a.jsx)(A,{dir:"right",size:18})]})})]}),(0,a.jsx)(i.default,{href:n,className:"alt-btn alt-btn--mandatory alt-mobile-cta",children:"Find an advisor"})]})]})}function P({siteBasePath:e,currentSlug:t}){let s="/"===t?"#advisor":p(e,"/contact");return(0,a.jsx)("nav",{className:"alt-sticky","aria-label":"Quick action",children:(0,a.jsx)(i.default,{href:s,className:"alt-btn alt-btn--mandatory",children:"Find an advisor"})})}function T({siteBasePath:e}){return(0,a.jsx)("footer",{className:"alt-footer",children:(0,a.jsxs)("div",{className:"alt-wrap alt-footer-inner",children:[(0,a.jsxs)("div",{className:"alt-footer-brand",children:[(0,a.jsxs)("p",{className:"alt-footer-logo",children:[(0,a.jsx)(z,{}),(0,a.jsx)("span",{className:"alt-brand-name",children:v})]}),(0,a.jsx)("p",{className:"alt-footer-tag",children:"Money briefings and tools for pilots, flight crew and aviation professionals, and a match with a licensed financial advisor when you want one."})]}),(0,a.jsxs)("nav",{className:"alt-footer-cols","aria-label":"Footer",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"alt-footer-h",children:"Read and run"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:p(e,"/blog"),children:"Briefings"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:p(e,"/tools"),children:"Tools"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:p(e,"/services"),children:"Coverage"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:p(e,"/about"),children:"About"})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"alt-footer-h",children:"Get in touch"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:p(e,"/contact"),children:"Contact"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:p(e,"/contact"),children:"Find an advisor"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:p(e,"/advisors"),children:"For advisors"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:p(e,"/editorial-team"),children:"Who is behind this site"})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"alt-footer-h",children:"Policies"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:p(e,"/privacy"),children:"Privacy"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:p(e,"/terms"),children:"Terms"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:p(e,"/disclaimer"),children:"Disclaimer"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:p(e,"/do-not-sell"),children:"Do not sell or share my personal information"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:p(e,"/editorial-policy"),children:"Editorial policy"})})]})]})]}),(0,a.jsx)("p",{className:"alt-footer-note",children:"This site is an educational publisher. It does not give personalized investment, tax or legal advice, recommend securities or manage money, and asking to be matched creates no advisory relationship. Any relationship is between you and the licensed financial advisor you choose, under that advisor’s own agreement and disclosures. Advisors may pay for introductions. The tools are illustrations, not forecasts."})]})})}var E=e.i(247167),F=e.i(3303);let L=E.default.env.NEXT_PUBLIC_TURNSTILE_SITE_KEY,I="We could not send your request just now. Please try again.";function $({block:e,siteKey:i,siteName:s,pageSlug:r,pageTitle:n,presetTopic:l,variant:c="client"}){let d=(0,t.useId)().replace(/:/g,""),h=e.steps??[{title:e.title}],m=h.length,[p,g]=(0,t.useState)(1),[v,u]=(0,t.useState)(""),[b,f]=(0,t.useState)(!1),[x,y]=(0,t.useState)({kind:"idle"}),w=(0,t.useRef)(null),_=(0,t.useRef)(null),k=(0,t.useRef)(null),j=e.fields.find(e=>"help_topic"===e.name);(0,t.useEffect)(()=>
21370{if(!j)return;let e=new URLSearchParams(window.location.search).get("topic");e&&j.options?.includes(e)&&u(e)},[j]),(0,t.useEffect)(()=>{l&&j?.options?.includes(l)&&(u(l),g(1))},[l,j]);let N=()=>window.setTimeout(()=>_.current?.focus(),0);function S(){(function(e){let a=w.current;if(!a)return!0;for(let i of Array.from(a.querySelectorAll(`[data-step="${e}"] input, [data-step="${e}"] select, [data-step="${e}"] textarea`)))if(!i.reportValidity())return!1;return!0})(p)&&(g(e=>Math.min(e+1,m)),N())}async function A(a){if(a.preventDefault(),p<m)return void S();let t=a.currentTarget,o=new FormData(t),l=String(o.get("company_website")??"").trim(),c=String(o.get("cf-turnstile-response")??"").trim(),d={};for(let[e,a]of o.entries())"company_website"!==e&&"cf-turnstile-response"!==e&&"string"==typeof a&&(d[e]=a.trim());f(!0);try{let a=await fetch("/api/leads",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({siteKey:i,siteName:s,pageSlug:r,pageTitle:n,sourceUrl:window.location.href,honeypot:l,turnstileToken:c,fields:d})}),o=await a.json().catch(()=>null);if(!a.ok)throw Error(o?.message??I);t.reset(),u(""),g(1),y({kind:"success",message:e.successMessage??"Thank you. We have your request."}),window.setTimeout(()=>k.current?.focus(),0)}catch(e){y({kind:"error",message:e instanceof Error?e.message:I})}finally{f(!1)}}if("success"===x.kind)return(0,a.jsxs)("div",{ref:k,tabIndex:-1,className:"alt-pass alt-pass--done",role:"status",children:[(0,a.jsx)("div",{className:"alt-pass-head",children:(0,a.jsx)("span",{className:"alt-mono",children:"advisor"===c?"Application received":"Request received"})}),(0,a.jsxs)("div",{className:"alt-pass-body",children:[(0,a.jsx)("h3",{className:"alt-h3",children:"Thank you."}),(0,a.jsx)("p",{children:x.message}),"advisor"===c?null:(0,a.jsxs)("ol",{className:"alt-done-steps",children:[(0,a.jsx)("li",{children:"We review your answers."}),(0,a.jsx)("li",{children:"We contact you to confirm what you need."}),(0,a.jsxs)("li",{children:["We match you with a licensed financial advisor who specializes in ",o,". You decide what happens next."]})]})]})]});let z=e=>{let i=`alt-${d}-${e.name}`,t=e.required??!1,s=e.hint?`${i}-hint`:void 0;if("hidden"===e.type)return(0,a.jsx)("input",{type:"hidden",name:e.name,value:e.value??""},e.name);if("checkbox"===e.type)return(0,a.jsxs)("div",{className:"alt-field",children:[(0,a.jsxs)("label",{className:"alt-check",children:[(0,a.jsx)("input",{type:"checkbox",name:e.name,value:"yes",required:t,"aria-describedby":s}),(0,a.jsx)("span",{children:e.label})]}),e.hint?(0,a.jsx)("p",{id:s,className:"alt-hint",children:e.hint}):null]},e.name);let r=!t&&!e.label.toLowerCase().includes("optional"),n=(0,a.jsxs)("label",{htmlFor:i,className:"alt-label",children:[e.label,r?(0,a.jsx)("span",{className:"alt-opt",children:" (optional)"}):null]}),o=e.hint?(0,a.jsx)("p",{id:s,className:"alt-hint",children:e.hint}):null;if("select"===e.type){let r="help_topic"===e.name;return(0,a.jsxs)("div",{className:"alt-field",children:[n,(0,a.jsxs)("select",{id:i,name:e.name,required:t,"aria-describedby":s,className:"alt-input alt-select",...r?{value:v,onChange:e=>u(e.target.value)}:{defaultValue:""},children:[(0,a.jsx)("option",{value:"",disabled:!0,children:"Select…"}),(e.options??[]).map(e=>(0,a.jsx)("option",{value:e,children:e},e))]}),o]},e.name)}return"textarea"===e.type?(0,a.jsxs)("div",{className:"alt-field",children:[n,(0,a.jsx)("textarea",{id:i,name:e.name,required:t,rows:4,"aria-describedby":s,className:"alt-input"}),o]},e.name):(0,a.jsxs)("div",{className:"alt-field",children:[n,(0,a.jsx)("input",{id:i,name:e.name,type:e.type,required:t,"aria-describedby":s,className:"alt-input",autoComplete:{email:"email",phone:"tel",full_name:"name",location:"postal-code"}[e.name]??"off"}),o]},e.name)};return(0,a.jsxs)("form",{ref:w,className:"alt-pass",onSubmit:A,"aria-label":"advisor"===c?"Advisor application":"Advisor match request",children:[(0,a.jsxs)("div",{className:"alt-pass-head",children:[(0,a.jsx)("span",{className:"alt-mono",children:"advisor"===c?"Advisor application":"Advisor match"}),(0,a.jsxs)("span",{className:"alt-mono alt-pass-count",children:["Step ",p," of ",m]})]}
21370),(0,a.jsx)("ol",{className:"alt-pass-legs","aria-hidden":!0,children:h.map((e,i)=>(0,a.jsx)("li",{className:i+1<p?"is-done":i+1===p?"is-now":"",children:(0,a.jsx)("span",{className:"alt-mono",children:String(i+1).padStart(2,"0")})},e.title))}),(0,a.jsxs)("div",{className:"alt-pass-body",children:[h.map((i,t)=>(0,a.jsxs)("div",{"data-step":t+1,hidden:p!==t+1,className:"alt-pass-step",children:[(0,a.jsx)("h3",{ref:p===t+1?_:void 0,tabIndex:-1,className:"alt-pass-h",children:i.title}),i.description?(0,a.jsx)("p",{className:"alt-pass-d",children:i.description}):null,e.fields.filter(e=>(e.step??1)===t+1).map(z)]},i.title)),(0,a.jsxs)("label",{className:"alt-hp","aria-hidden":"true",children:[(0,a.jsx)("span",{children:"Leave this blank"}),(0,a.jsx)("input",{autoComplete:"off",name:"company_website",tabIndex:-1,type:"text"})]}),L?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(F.default,{src:"https://challenges.cloudflare.com/turnstile/v0/api.js",strategy:"afterInteractive",async:!0,defer:!0}),(0,a.jsx)("div",{className:"cf-turnstile","data-sitekey":L,"data-theme":"light"})]}):null,(0,a.jsxs)("div",{className:"alt-pass-nav",children:[p>1?(0,a.jsx)("button",{type:"button",className:"alt-btn alt-btn--line",onClick:function(){g(e=>Math.max(1,e-1)),N()},children:"Back"}):null,p<m?(0,a.jsx)("button",{type:"button",className:"alt-btn alt-btn--sign",onClick:S,children:"Next"}):(0,a.jsx)("button",{type:"submit",className:"alt-btn alt-btn--mandatory",disabled:b,children:b?"Sending…":e.submitLabel??"Get matched with an advisor"})]}),(0,a.jsx)("div",{className:`alt-status${"error"===x.kind?" alt-status--error":""}`,role:"error"===x.kind?"alert":"status",children:"error"===x.kind?x.message:""})]}),(0,a.jsxs)("div",{className:"alt-pass-stub",children:[e.disclosure?(0,a.jsx)("p",{className:"alt-disclosure",children:e.disclosure}):null,"advisor"===c?null:(0,a.jsx)("p",{className:"alt-disclosure",children:"Please do not include account numbers or details of your medical certificate."})]})]})}let B=[{age:"59½",what:"Penalty-free withdrawals"},{age:"62",what:"Earliest Social Security"},{age:"65",what:"Part 121 flying ends · Medicare"},{age:"67",what:"Full retirement age, born 1960 or later"},{age:"70",what:"Delayed credits stop"}];function q({siteBasePath:e,advisorBlock:s}){let[l,d]=(0,t.useState)(""),m=e=>{d(e),u()},g=n.topics.filter(e=>"Something else"!==e);return(0,a.jsxs)(C,{children:[(0,a.jsx)(M,{siteBasePath:e,currentSlug:"/"}),(0,a.jsxs)("main",{id:"main-content",tabIndex:-1,className:"alt-main",children:[(0,a.jsx)("section",{className:"alt-hero","aria-labelledby":"alt-h1",children:(0,a.jsxs)("div",{className:"alt-wrap",children:[(0,a.jsxs)("nav",{className:"alt-signs","aria-label":"Wayfinding",children:[(0,a.jsx)("span",{className:"alt-sign alt-sign--loc","aria-hidden":!0,children:(0,a.jsx)(z,{})}),(0,a.jsxs)(i.default,{href:p(e,"/blog"),className:"alt-sign alt-sign--dir",children:[(0,a.jsx)(A,{dir:"upleft"})," Briefings"]}),(0,a.jsxs)("a",{href:"#bridge",className:"alt-sign alt-sign--dir",children:[(0,a.jsx)(A,{dir:"down"})," Age-65 bridge"]}),(0,a.jsxs)(i.default,{href:p(e,"/tools"),className:"alt-sign alt-sign--dir",children:["Tools ",(0,a.jsx)(A,{dir:"upright"})]}),(0,a.jsx)("a",{href:"#advisor",className:"alt-sign alt-sign--mand",children:"Find an advisor"})]}),(0,a.jsxs)("div",{className:"alt-hero-grid",children:[(0,a.jsxs)("div",{className:"alt-hero-copy",children:[(0,a.jsx)("h1",{id:"alt-h1",className:"alt-h1",children:"Age 65 is fixed. Plan the years around it."}),(0,a.jsx)("p",{className:"alt-lede",children:"Money briefings for airline pilots, flight crew and everyone who keeps aviation moving: seniority steps, per diem, loss-of-medical cover, the B-fund, and the years between your last trip and your first Social Security payment."}),(0,a.jsxs)("p",{className:"alt-hero-flow",children:["When you want a professional, we match you with a licensed financial advisor who specializes in"," ",o,"."]}),(0,a.jsxs)("div",{className:"alt-cta-row",children:[(0,a.jsx)("a",{href:"#advisor",className:"alt-btn alt-btn--mandatory",children:"Find an advisor"}),(0,a.jsx)("a",{href:"#bridge",className:"alt-btn alt-btn--sign",children:"Run the age-65 bridge"})]})]}),(0,a.jsxs)("div",{className:"alt-fixed",children:[(0,a.jsx)("h2",{id:"alt-fixed-h",className:"alt-fixed-h alt-mono",children:"Fixed times on every pilot’s schedule"}),(0,a.jsx)("ul",{children:B.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"alt-fixed-age alt-mono",children:e.age}),(0,a.jsx)("span",{className:"alt-fixed-what",children:e.what})]},e.age))}),(0,a.jsx)("p",{className:"alt-fixed-foot",children:"Ages under US rules. Part 121 is the airline rule; check it is current before you plan around it."})]})]})]})}),(0,a.jsx)("section",{className:"alt-how","aria-labelledby":"alt-how-h",children:(0,a.jsxs)("div",{className:"alt-wrap",children:[(0,a.jsx)("h2",{id:"alt-how-h",className:"alt-h2",children:"How it works"}),(0,a.jsxs)("ol",{className:"alt-how-list",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"alt-how-no alt-mono","aria-hidden":!0,
21370children:"1"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"alt-how-t",children:"Answer a few questions"}),(0,a.jsx)("p",{children:"Four short steps: where you are, your finances (ranges are fine), your goals and how to reach you."})]})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"alt-how-no alt-mono","aria-hidden":!0,children:"2"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"alt-how-t",children:"We review and contact you"}),(0,a.jsx)("p",{children:"We review your answers and contact you to confirm what you need."})]})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"alt-how-no alt-mono","aria-hidden":!0,children:"3"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"alt-how-t",children:"We match you"}),(0,a.jsxs)("p",{children:["We match you with a licensed financial advisor who specializes in ",o,". You decide what happens next."]})]})]})]})]})}),(0,a.jsx)("section",{className:"alt-section","aria-labelledby":"alt-dep-h",children:(0,a.jsxs)("div",{className:"alt-wrap",children:[(0,a.jsxs)("div",{className:"alt-sec-head",children:[(0,a.jsx)("h2",{id:"alt-dep-h",className:"alt-h2",children:"Departures: ten briefings"}),(0,a.jsx)("p",{className:"alt-sec-lede",children:"Each takes about four minutes. Gates follow the topic: C for career stages, B for benefits and insurance, I for investing."})]}),(0,a.jsx)(k,{briefings:h,siteBasePath:e,caption:"Ten briefings, listed as departures",flip:!0}),(0,a.jsx)("p",{className:"alt-more",children:(0,a.jsx)(i.default,{href:p(e,"/blog"),className:"alt-link alt-link--strong",children:"Every briefing with its summary"})})]})}),(0,a.jsx)("section",{id:"bridge",className:"alt-section alt-section--deep","aria-labelledby":"alt-bridge-h",children:(0,a.jsxs)("div",{className:"alt-wrap",children:[(0,a.jsxs)("div",{className:"alt-sec-head",children:[(0,a.jsx)("h2",{id:"alt-bridge-h",className:"alt-h2",children:"The age-65 bridge"}),(0,a.jsx)("p",{className:"alt-sec-lede",children:"Airline flying ends at 65. Social Security can start at 62, pays in full at 67 and stops growing at 70. Medicare starts at 65. Pick the age you stop flying and see how many years each gap leaves you to cover. Open a marker for the rule behind it."})]}),(0,a.jsx)(_,{onAsk:m,askHref:()=>"#advisor"})]})}),(0,a.jsx)("section",{id:"advisor",className:"alt-section alt-section--form","aria-labelledby":"alt-adv-h",children:(0,a.jsxs)("div",{className:"alt-wrap alt-form-grid",children:[(0,a.jsxs)("div",{className:"alt-form-intro",children:[(0,a.jsx)("h2",{id:"alt-adv-h",className:"alt-h2",children:s.title}),(0,a.jsx)("p",{className:"alt-body",children:s.body}),(0,a.jsx)("p",{className:"alt-list-h alt-mono",children:"What advisors help with"}),(0,a.jsx)("ul",{className:"alt-ticks",children:g.map(e=>(0,a.jsx)("li",{children:e},e))})]}),(0,a.jsx)($,{block:s,siteKey:r,siteName:v,pageSlug:"/",pageTitle:v,presetTopic:l})]})}),(0,a.jsx)("section",{className:"alt-section","aria-labelledby":"alt-tools-h",children:(0,a.jsxs)("div",{className:"alt-wrap",children:[(0,a.jsxs)("div",{className:"alt-sec-head",children:[(0,a.jsx)("h2",{id:"alt-tools-h",className:"alt-h2",children:"Tools"}),(0,a.jsx)("p",{className:"alt-sec-lede",children:"Both run in your browser. Nothing you type is sent anywhere."})]}),(0,a.jsxs)("ul",{className:"alt-tools",children:[(0,a.jsxs)("li",{className:"alt-tool",children:[(0,a.jsx)("p",{className:"alt-tool-code alt-mono",children:"T1"}),(0,a.jsx)("h3",{className:"alt-h3",children:"The age-65 bridge"}),(0,a.jsx)("p",{children:"Years between the age you stop flying and Social Security at 62, 67 and 70, Medicare at 65 and penalty-free withdrawals at 59½."}),(0,a.jsx)("a",{href:"#bridge",className:"alt-link alt-link--strong",children:"Back up to the bridge"})]}),(0,a.jsxs)("li",{className:"alt-tool",children:[(0,a.jsx)("p",{className:"alt-tool-code alt-mono",children:"T2"}),(0,a.jsx)("h3",{className:"alt-h3",children:"Furlough runway"}),(0,a.jsx)("p",{children:"How many months your cash covers if pay stops, drawn as a runway with a board every three months."}),(0,a.jsx)(i.default,{href:p(e,"/tools#runway"),className:"alt-link alt-link--strong",children:"Open the runway"})]})]})]})}),(0,a.jsx)("section",{className:"alt-section alt-section--close","aria-labelledby":"alt-close-h",children:(0,a.jsx)("div",{className:"alt-wrap",children:(0,a.jsxs)("div",{className:"alt-hold",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"alt-hold-sign alt-mono","aria-hidden":!0,
21370children:"Hold short"}),(0,a.jsx)("h2",{id:"alt-close-h",className:"alt-h2",children:"Hold short before you file, retire or change seats."}),(0,a.jsxs)("p",{children:["A licensed financial advisor who specializes in ",o," can check the numbers first. Tell us about your situation and we will match you."]})]}),(0,a.jsx)("button",{type:"button",className:"alt-btn alt-btn--onred",onClick:()=>m(c.review),children:"Find an advisor"})]})})})]}),(0,a.jsx)(T,{siteBasePath:e}),(0,a.jsx)(P,{siteBasePath:e,currentSlug:"/"})]})}function R(e){let a=Number(e.replace(/[^0-9.]/g,""));return Number.isFinite(a)?a:0}function H(){let e=(0,t.useId)().replace(/:/g,""),[i,s]=(0,t.useState)("45000"),[r,n]=(0,t.useState)("7500"),[o,l]=(0,t.useState)("1500"),c=R(i),d=R(r),h=d-R(o),m=h<=0,p=m?1/0:c/h,g=Math.min(p,24)/24*100,v=d<=0?"Enter your essential spending per month to see the runway.":m?"Other income covers essential spending, so the cash is not drawn down in this illustration.":`About ${p>=10?Math.round(p):p.toFixed(1)} months of cover: ${b(c)} drawn down at ${b(h)} a month.`;return(0,a.jsxs)("div",{className:"alt-runway",children:[(0,a.jsxs)("div",{className:"alt-runway-inputs",children:[(0,a.jsxs)("div",{className:"alt-field",children:[(0,a.jsx)("label",{className:"alt-label",htmlFor:`${e}-cash`,children:"Cash set aside"}),(0,a.jsxs)("div",{className:"alt-money",children:[(0,a.jsx)("span",{"aria-hidden":!0,children:"$"}),(0,a.jsx)("input",{id:`${e}-cash`,className:"alt-input",inputMode:"numeric",value:i,onChange:e=>s(e.target.value)})]})]}),(0,a.jsxs)("div",{className:"alt-field",children:[(0,a.jsx)("label",{className:"alt-label",htmlFor:`${e}-spend`,children:"Essential spending per month"}),(0,a.jsxs)("div",{className:"alt-money",children:[(0,a.jsx)("span",{"aria-hidden":!0,children:"$"}),(0,a.jsx)("input",{id:`${e}-spend`,className:"alt-input",inputMode:"numeric",value:r,onChange:e=>n(e.target.value)})]})]}),(0,a.jsxs)("div",{className:"alt-field",children:[(0,a.jsx)("label",{className:"alt-label",htmlFor:`${e}-other`,children:"Other income per month while furloughed"}),(0,a.jsxs)("div",{className:"alt-money",children:[(0,a.jsx)("span",{"aria-hidden":!0,children:"$"}),(0,a.jsx)("input",{id:`${e}-other`,className:"alt-input",inputMode:"numeric",value:o,onChange:e=>l(e.target.value)})]})]})]}),(0,a.jsxs)("figure",{className:"alt-runway-fig",children:[(0,a.jsxs)("div",{className:"alt-runway-strip","aria-hidden":!0,children:[(0,a.jsx)("span",{className:"alt-runway-threshold"}),(0,a.jsx)("span",{className:"alt-runway-center"}),[3,6,9,12,15,18,21].map(e=>(0,a.jsx)("span",{className:"alt-runway-board alt-mono",style:{left:`${e/24*100}%`},children:e},e)),(0,a.jsx)("span",{className:`alt-runway-stop${g>88?" is-beyond":g<12?" is-start":""}`,style:{left:`${g}%`},children:(0,a.jsx)("span",{className:"alt-mono",children:m?"∞":p>24?"24+ mo":`${p.toFixed(1)} mo`})})]}),(0,a.jsxs)("figcaption",{className:"alt-runway-cap",children:[(0,a.jsx)("span",{className:"alt-mono",children:"0"}),(0,a.jsx)("span",{children:"Months from the start of a furlough. The black boards mark every three months, the way runway distance boards mark every thousand feet."}),(0,a.jsx)("span",{className:"alt-mono",children:24})]})]}),(0,a.jsx)("p",{className:"alt-runway-out","aria-live":"polite",children:v}),(0,a.jsx)("p",{className:"alt-fine",children:"Illustration: months = cash ÷ (spending − other income). It assumes spending and income stay flat and the cash earns nothing. It is not a forecast."})]})}let D=(e,a)=>/^https?:|^#/.test(a)?a:p(e.siteBasePath,a);function W({code:e,kicker:i,title:t,lede:s,children:r}){return(0,a.jsx)("header",{className:"alt-page-head",children:(0,a.jsxs)("div",{className:"alt-wrap",children:[(0,a.jsxs)("p",{className:"alt-page-sign",children:[(0,a.jsx)("span",{className:"alt-sign-loc alt-mono",children:e}),i?(0,a.jsx)("span",{className:"alt-sign-dir",children:i}):null]}),(0,a.jsx)("h1",{className:"alt-h1 alt-h1--page",children:t}),s?(0,a.jsx)("p",{className:"alt-lede",children:s}):null,r]})})}function O({children:e,tone:i,id:t,label:s,labelledBy:r}){return(0,a.jsx)("section",{id:t,"aria-label":r?void 0:s,"aria-labelledby":r,className:`alt-section${i?` alt-section--${i}`:""}`,children:(0,a.jsx)("div",{className:"alt-wrap",children:e})})}function Y({title:e,body:i}){return(0,a.jsxs)("div",{className:"alt-sec-head",children:[e?(0,a.jsx)("h2",{className:"alt-h2",children:e}):null,i?(0,a.jsx)("p",{className:"alt-sec-lede",children:i}):null]})}function V({ctx:e,topic:i,title:t,body:s}){return(0,a.jsxs)("div",{className:"alt-ask",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"alt-ask-t",children:t}),(0,a.jsx)("p",{className:"alt-ask-b",children:s})]}),(0,a.jsx)("a",{href:e.askHref(i),className:"alt-btn alt-btn--mandatory",onClick:a=>{e.hasForm&&(a.preventDefault(),e.ask(i))},children:"Talk to an advisor about this"})]})}function G({block:e,ctx:i,intro:t}){let s=e.fields.some(e=>
21370"crd_number"===e.name),r=s?"alt-apply-h":"alt-advisor-h";return(0,a.jsx)(O,{tone:"form",id:s?"apply":"advisor",labelledBy:r,children:(0,a.jsxs)("div",{className:"alt-form-grid",children:[(0,a.jsxs)("div",{className:"alt-form-intro",children:[(0,a.jsx)("h2",{id:r,className:"alt-h2",children:e.title}),(0,a.jsx)("p",{className:"alt-body",children:e.body}),t??(s?null:(0,a.jsxs)("ol",{className:"alt-steps",children:[(0,a.jsx)("li",{children:"Answer four short steps. Ranges are fine for money questions."}),(0,a.jsx)("li",{children:"We review your answers and contact you to confirm what you need."}),(0,a.jsxs)("li",{children:["We match you with a licensed financial advisor who specializes in ",o,". You decide what happens next."]})]}))]}),(0,a.jsx)($,{block:e,variant:s?"advisor":"client",siteKey:i.siteKey,siteName:i.siteName,pageSlug:i.page.slug,pageTitle:i.page.title,presetTopic:s?void 0:i.topic})]})})}let K=new Set(["What trust signals does this desk maintain?","What type of content lives here?"]);function U({block:e,ctx:t,untitled:s=!1}){switch(e.type){case"story":return(0,a.jsxs)(O,{children:[(0,a.jsx)(Y,{title:s?void 0:e.title,body:e.body}),e.highlights?.length?(0,a.jsx)("ul",{className:"alt-ticks alt-ticks--wide",children:e.highlights.map(e=>(0,a.jsx)("li",{children:e},e))}):null]});case"services":return(0,a.jsxs)(O,{children:[(0,a.jsx)(Y,{title:e.title,body:e.body}),(0,a.jsx)("ul",{className:"alt-rows",children:e.items.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"alt-h4",children:e.title}),(0,a.jsx)("p",{children:e.description})]},e.title))})]});case"split-panel":return(0,a.jsxs)(O,{tone:"deep",children:[(0,a.jsx)(Y,{title:e.title,body:e.body}),(0,a.jsx)("ol",{className:"alt-numbered",children:e.panels.map((e,i)=>(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"alt-numbered-no alt-mono","aria-hidden":!0,children:String(i+1).padStart(2,"0")}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"alt-h4",children:e.heading}),(0,a.jsx)("p",{children:e.body})]})]},e.heading))})]});case"team":return(0,a.jsxs)(O,{children:[(0,a.jsx)(Y,{title:e.title}),(0,a.jsx)("ul",{className:"alt-rows",children:e.people.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsxs)("h3",{className:"alt-h4",children:[e.name," ",(0,a.jsx)("span",{className:"alt-role",children:e.role})]}),(0,a.jsx)("p",{children:e.bio})]},e.name))})]});case"faq":return(0,a.jsxs)(O,{children:[(0,a.jsx)(Y,{title:e.title}),(0,a.jsx)("div",{className:"alt-faq",children:e.items.filter(e=>!K.has(e.question)).map(e=>(0,a.jsxs)("details",{className:"alt-faq-item",children:[(0,a.jsx)("summary",{children:e.question}),(0,a.jsx)("p",{children:e.answer})]},e.question))})]});case"cta-band":return(0,a.jsx)(O,{children:(0,a.jsxs)("div",{className:"alt-band",children:[(0,a.jsx)(Y,{title:e.title,body:e.body}),(0,a.jsxs)("div",{className:"alt-cta-row",children:[(0,a.jsx)(i.default,{href:D(t,e.primaryCta.href),className:"alt-btn alt-btn--mandatory",children:e.primaryCta.label}),e.secondaryCta?(0,a.jsx)(i.default,{href:D(t,e.secondaryCta.href),className:"alt-btn alt-btn--line",children:e.secondaryCta.label}):null]})]})});case"blog-feed":{let i=e.posts.map(e=>m(e.href.replace(/^https?:\/\/[^/]+/,"").replace(/^\/blog\//,""))).filter(e=>!!e);return(0,a.jsxs)(O,{children:[(0,a.jsx)(Y,{title:"Departures",body:e.body}),(0,a.jsx)(k,{briefings:i,siteBasePath:t.siteBasePath,caption:"Every briefing, listed as departures",excerpts:!0,flip:!0})]})}case"html-content":return(0,a.jsx)(O,{children:(0,a.jsx)("div",{className:"alt-prose",dangerouslySetInnerHTML:{__html:e.html}})});case"lead-form":return(0,a.jsx)(G,{block:e,ctx:t});case"finance-calculator":case"pricing":return null;default:if(!e.title&&!e.body)return null;return(0,a.jsx)(O,{children:(0,a.jsx)(Y,{title:e.title,body:e.body})})}}function J({ctx:e,siteName:t}){let{page:s}=e,r=s.blocks.find(e=>"hero"===e.type),n=s.blocks.find(e=>"html-content"===e.type),l=s.blocks.find(e=>"faq"===e.type),d=s.blocks.find(e=>"lead-form"===e.type),g=0,v=[],u=n.html.replace(/<h2>([\s\S]*?)<\/h2>/g,(e,a)=>{g+=1;let i=`leg-${g}`;return v.push({id:i,text:a.replace(/<[^>]+>/g,"").trim()}),`<h2 id="${i}">${a}</h2>`}),b=Math.max(1,Math.round(n.html.replace(/<[^>]+>
21370/g," ").split(/\s+/).filter(Boolean).length/230)),f=s.slug.replace(/^\/blog\//,""),x=m(f),y=x?.topic||c.review,w=h.filter(e=>e.slug!==f).sort((e,a)=>Number(a.concourse===x?.concourse)-Number(e.concourse===x?.concourse)).slice(0,3),j=l?.items.map(e=>({...e,answer:e.answer.replace(/^Aviation Financial Advisor is/,`${t} is`)}));return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("header",{className:"alt-page-head alt-page-head--read",children:(0,a.jsxs)("div",{className:"alt-read",children:[(0,a.jsxs)("p",{className:"alt-page-sign",children:[(0,a.jsx)("span",{className:"alt-sign-loc alt-mono",children:x?.gate??"AW"}),(0,a.jsxs)(i.default,{href:p(e.siteBasePath,"/blog"),className:"alt-sign-dir alt-sign-dir--link",children:[(0,a.jsx)(A,{dir:"left",size:18})," Briefings"]})]}),(0,a.jsxs)("p",{className:"alt-read-flight alt-mono",children:[x?`${x.flight} \xb7 `:"",r?.eyebrow??x?.pillar]}),(0,a.jsx)("h1",{className:"alt-h1 alt-h1--read",children:s.title}),r?.body?(0,a.jsx)("p",{className:"alt-standfirst",children:r.body}):null,(0,a.jsxs)("p",{className:"alt-read-meta alt-mono",children:[b," min read ",(0,a.jsx)("span",{"aria-hidden":!0,children:"·"})," General education, not advice"]})]})}),(0,a.jsx)("div",{className:"alt-read-body",children:(0,a.jsxs)("div",{className:"alt-read",children:[(0,a.jsxs)("nav",{className:"alt-legs","aria-label":"In this briefing",children:[(0,a.jsx)("p",{className:"alt-legs-h alt-mono",children:"In this briefing"}),(0,a.jsx)("ol",{children:v.map((e,i)=>(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"alt-mono","aria-hidden":!0,children:String(i+1).padStart(2,"0")}),(0,a.jsx)("a",{href:`#${e.id}`,children:e.text})]},e.id))})]}),(0,a.jsx)("article",{className:"alt-prose","aria-label":s.title,dangerouslySetInnerHTML:{__html:u}}),x?.tool==="bridge"?(0,a.jsxs)("section",{className:"alt-inline-tool","aria-labelledby":"alt-inline-bridge",children:[(0,a.jsx)("h2",{id:"alt-inline-bridge",className:"alt-h3",children:"Run your own bridge"}),(0,a.jsx)("p",{children:"Pick the age you stop flying. Each row shows the years to cover before that milestone opens."}),(0,a.jsx)(_,{onAsk:e.ask,askHref:e.askHref})]}):null,x?.tool==="runway"?(0,a.jsxs)("section",{className:"alt-inline-tool alt-inline-tool--light","aria-labelledby":"alt-inline-runway",children:[(0,a.jsx)("h2",{id:"alt-inline-runway",className:"alt-h3",children:"Measure your furlough runway"}),(0,a.jsx)("p",{children:"How many months would your cash cover if flying pay stopped?"}),(0,a.jsx)(H,{})]}):null,(0,a.jsx)(V,{ctx:e,topic:y,title:"Want someone to apply this to your contract?",body:`We contact you to confirm what you need, then match you with a licensed financial advisor who specializes in ${o}.`}),j?.length?(0,a.jsxs)("section",{className:"alt-read-faq","aria-labelledby":"alt-read-faq-h",children:[(0,a.jsx)("h2",{id:"alt-read-faq-h",className:"alt-h3",children:l?.title??"Important context"}),(0,a.jsx)("div",{className:"alt-faq",children:j.map(e=>(0,a.jsxs)("details",{className:"alt-faq-item",children:[(0,a.jsx)("summary",{children:e.question}),(0,a.jsx)("p",{children:e.answer})]},e.question))})]}):null]})}),(0,a.jsxs)(O,{labelledBy:"alt-next-h",children:[(0,a.jsx)("div",{className:"alt-sec-head",children:(0,a.jsx)("h2",{id:"alt-next-h",className:"alt-h2",children:"Next departures"})}),(0,a.jsx)(k,{briefings:w,siteBasePath:e.siteBasePath,caption:"Related briefings"})]}),d?(0,a.jsx)(G,{block:d,ctx:e}):null]})}function X({ctx:e}){return(0,a.jsxs)(O,{labelledBy:"alt-dir-h",children:[(0,a.jsxs)("div",{className:"alt-sec-head",children:[(0,a.jsx)("h2",{id:"alt-dir-h",className:"alt-h2",children:"Terminal directory"}),(0,a.jsx)("p",{className:"alt-sec-lede",children:"Three concourses. Every briefing sits at one gate."})]}),(0,a.jsx)("div",{className:"alt-concourses",children:d.map(t=>(0,a.jsxs)("div",{className:"alt-concourse",children:[(0,a.jsxs)("div",{className:"alt-concourse-head",children:[(0,a.jsx)("span",{className:"alt-concourse-gate alt-mono","aria-hidden":!0,children:t.gate}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("h3",{className:"alt-h3",children:[(0,a.jsxs)("span",{className:"alt-sr",children:["Concourse ",t.gate,": "]}),t.name]}),(0,a.jsx)("p",{children:t.blurb})]})]}),(0,a.jsx)("ul",{className:"alt-gates",children:h.filter(e=>e.concourse===t.gate).map(t=>{let s;return(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"alt-gate alt-mono",children:t.gate}),(0,a.jsx)(i.default,{href:(s=`/blog/${t.slug}`,p(e.siteBasePath,s)),className:"alt-gates-link",children:t.title})]},t.slug)})})]},t.gate))}),(0,a.jsxs)("div",{className:"alt-sec-head alt-sec-head--gap",children:[(0,a.jsx)("h2",{className:"alt-h2",children:"What you can ask an advisor about"}),(0,a.jsx)("p",{className:"alt-sec-lede",children:"These are the topics in the match form. Pick one and the form opens with it chosen."})]}),(0,a.jsx)("ul",{className:"alt-topic-list",children:n.topics.filter(e=>"Something else"!==e).map(i=>(0,a.jsx)("li",{children:(0,a.jsxs)("a",{href:e.askHref(i),className:"alt-topic",onClick:a=>{e.hasForm&&(a.preventDefault(),e.ask(i))},children:[(0,a.jsx)("span",{children:i}),(0,a.jsx)(A,{dir:"right",size:18})]})},i))})]})}function Z({ctx:e}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(O,{id:"bridge",tone:"deep",labelledBy:"alt-t1",children:[(0,a.jsxs)("div",{className:"alt-sec-head",children:[(0,a.jsx)("p",{className:"alt-tool-code alt-mono",children:"T1"}),(0,a.jsx)("h2",{id:"alt-t1",className:"alt-h2",children:"The age-65 bridge"}),(0,a.jsx)("p",{className:"alt-sec-lede",children:"Airline flying ends at 65. Social Security can start at 62, pays in full at 67 and stops growing at 70. Medicare starts at 65. Pick the age you stop flying and see how many years each gap leaves to cover."})]}),(0,a.jsx)(_,{onAsk:e.ask,askHref:e.askHref}),(0,a.jsx)("p",{className:"alt-more",children:(0,a.jsx)(i.default,{href:p(e.siteBasePath,"/blog/faa-age-65-mandatory-retirement-drawdown"),className:"alt-link alt-link--strong",children:"Read: Planning Your Drawdown Around FAA Age-65 Mandatory Retirement"})})]}),(0,a.jsxs)(O,{id:"runway",labelledBy:"alt-t2",children:[(0,a.jsxs)("div",{className:"alt-sec-head",children:[(0,a.jsx)("p",{className:"alt-tool-code alt-mono",children:"T2"}),(0,a.jsx)("h2",{id:"alt-t2",className:"alt-h2",children:"Furlough runway"}),(0,a.jsx)("p",{className:"alt-sec-lede",children:"If flying pay stopped tomorrow, how many months would your cash cover?"})]}),(0,a.jsx)(H,{}),(0,a.jsx)(V,{ctx:e,topic:c.pay,title:"Facing a furlough, a merger or a contract change?",body:`A licensed financial advisor who specializes in ${o} can look at your cash, benefits and timing with you.`}),(0,a.jsx)("p",{className:"alt-more",children:(0,a.jsx)(i.default,{href:p(e.siteBasePath,"/blog/furlough-financial-preparedness"),className:"alt-link alt-link--strong",children:"Read: Furlough-Proofing Your Finances Before You Need To"})})]})]})}let Q={"/blog":"DEP","/tools":"T","/services":"DIR","/about":"AWD","/contact":"ADV","/advisors":"ADV","/advisor":"ADV","/privacy":"INFO","/terms":"INFO","/disclaimer":"INFO","/editorial-policy":"INFO","/editorial-team":"INFO"};function ee({page:e,siteBasePath:s,siteKey:r,siteName:n,after:l}){let c,[d,h]=(0,t.useState)(""),m=e.blocks,g=m.some(e=>"lead-form"===e.type&&!e.fields.some(e=>
21370"crd_number"===e.name)),v=p(s,"/contact"),b={siteBasePath:s,siteKey:r,siteName:n,page:e,topic:d,hasForm:g,ask:e=>{h(e),u()||window.location.assign(`${v}?topic=${encodeURIComponent(e)}#advisor`)},askHref:e=>g?"#advisor":`${v}?topic=${encodeURIComponent(e)}#advisor`},f=e.slug.startsWith("/blog/")&&m.some(e=>"html-content"===e.type),x=m.find(e=>"hero"===e.type),y=x?m.filter(e=>e!==x):m;"/tools"===e.slug&&(y=y.filter(e=>"lead-form"===e.type)),"/services"===e.slug&&(y=y.filter(e=>"lead-form"===e.type));let w=y[0],_=!x&&w?.type==="story"&&w.title.trim()===e.title.trim();if(f)c=(0,a.jsx)(J,{ctx:b,siteName:n});else if("/contact"===e.slug){let i=y.find(e=>"story"===e.type),t=y.find(e=>"lead-form"===e.type),s=y.filter(e=>e!==i&&e!==t);c=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(W,{code:"ADV",kicker:x?.eyebrow??"Find an advisor",title:x?.title??e.title,lede:x?.body??e.summary}),t?(0,a.jsx)(G,{block:t,ctx:b,intro:i?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"alt-list-h alt-mono",children:i.title}),(0,a.jsx)("ol",{className:"alt-steps",children:i.highlights.map(e=>(0,a.jsx)("li",{children:e},e))})]}):void 0}):null,s.map((e,i)=>(0,a.jsx)(U,{block:e,ctx:b},`${e.type}-${i}`))]})}else{let t="/tools"===e.slug?(0,a.jsx)(W,{code:"T",kicker:"Tools",title:"Two tools for aviation careers",lede:"Both run in your browser, state their rules and assumptions, and show no benefit amounts. Nothing you type is sent anywhere."}):"/services"===e.slug?(0,a.jsx)(W,{code:"DIR",kicker:"Coverage",title:"What we cover",lede:`Briefings for pilots, flight crew and aviation professionals, filed by concourse, and the topics a licensed financial advisor who specializes in ${o} can take on with you.`}):(0,a.jsx)(W,{code:Q[e.slug]??"AWD",kicker:x?.eyebrow&&x.eyebrow!==(x.title??e.title)?x.eyebrow:void 0,title:x?.title??e.title,lede:x?.body??e.summary,children:x?.primaryCta?(0,a.jsx)("p",{className:"alt-cta-row",children:(0,a.jsx)(i.default,{href:D(b,x.primaryCta.href),className:"alt-btn alt-btn--sign",children:x.primaryCta.label})}):null});c=(0,a.jsxs)(a.Fragment,{children:[t,"/tools"===e.slug?(0,a.jsx)(Z,{ctx:b}):null,"/services"===e.slug?(0,a.jsx)(X,{ctx:b}):null,y.map((e,i)=>(0,a.jsx)(U,{block:e,ctx:b,untitled:_&&0===i},`${e.type}-${i}`))]})}return(0,a.jsxs)(C,{children:[(0,a.jsx)(M,{siteBasePath:s,currentSlug:e.slug}),(0,a.jsxs)("main",{id:"main-content",tabIndex:-1,className:"alt-main",children:[c,l?(0,a.jsx)("div",{className:"alt-wrap alt-after",children:l}):null]}),(0,a.jsx)(T,{siteBasePath:s}),(0,a.jsx)(P,{siteBasePath:s,currentSlug:e.slug})]})}e.s(["ContentPage",0,function(e){return(0,a.jsx)(ee,{...e})},"HomePage",0,function(e){return(0,a.jsx)(q,{siteBasePath:e.siteBasePath,advisorBlock:e.advisorBlock})}],220964)},275961,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645),s=e.i(600951);let r="Vantage MD Wealth",n="physicians and clinicians",o="Income planning for a new attending contract",l="Student loans (refinancing or forgiveness)",c="Retirement catch-up after a late start",d="Disability and malpractice insurance",h=[{slug:"resident-student-loan-repayment-strategy",title:"Student Loan Repayment Strategy During Residency: IDR, PSLF, and Refinancing Tradeoffs",pillar:"Debt",stop:"residency",topic:l,read:4,excerpt:"Residents earn too little to pay loans aggressively and too much to ignore strategy. Here is how income-driven repayment, PSLF, and refinancing interact during training."},{slug:"own-occupation-disability-insurance-physicians",title:"Own-Occupation Disability Insurance for Physicians, Explained",pillar:"Risk",stop:"fellowship",topic:d,read:4,excerpt:"A physician's earning power depends on a narrow set of physical and cognitive skills. Own-occupation disability coverage protects that in a way group policies usually do not."},{slug:"attending-contract-negotiation-financial-basics",title:"Attending Contract Negotiation: The Financial Basics Beyond Base Salary",pillar:"Career arc",stop:"contract",topic:o,read:4,excerpt:"Base salary is the number everyone compares, but RVU thresholds, signing bonuses, and restrictive covenants often matter more to your real financial outcome."},{slug:"backdoor-roth-403b-401a-stacking-hospital-employed",title:"Stacking 403(b), 401(a), and Backdoor Roth for Hospital-Employed Physicians",pillar:"Retirement",stop:"mid",topic:c,read:4,excerpt:"Hospital-employed physicians often have access to more tax-advantaged savings vehicles than they realize. Here is how the pieces fit together."},{slug:"locum-tenens-tax-retirement-planning",title:"Locum Tenens Tax and Retirement Planning",pillar:"Practice economics",stop:"mid",topic:"Moonlighting income and taxes",read:4,excerpt:"Locum work trades employment stability for 1099 flexibility — and a fundamentally different set of tax and retirement planning tools."},{slug:"private-practice-vs-employed-physician-compensation",title:"Private Practice vs. Employed Physician Compensation: A Real Comparison",pillar:"Practice economics",stop:"contract",topic:o,read:4,excerpt:"Ownership upside versus employment stability is not just a lifestyle choice — it is a financial structure choice with very different risk and reward profiles."},{slug:"malpractice-tail-coverage-cost-planning",title:"Planning for the Cost of Malpractice Tail Coverage",pillar:"Risk",stop:"transition",topic:d,read:4,excerpt:"Leaving a job with claims-made malpractice insurance can trigger a tail coverage bill running into the tens of thousands of dollars. Plan for it before you need to."},{slug:"physician-mortgage-loan-programs-explained",title:"Physician Mortgage Loan Programs Explained",pillar:"Debt",stop:"contract",topic:o,read:4,excerpt:"Physician loans let new attendings buy a home with little or no down payment despite high student debt. The tradeoffs are real and worth understanding first."},{slug:"residency-to-attending-income-jump-timing",title:"Timing Major Purchases Around the Residency-to-Attending Income Jump",pillar:"Career arc",stop:"contract",topic:o,read:4,excerpt:"The jump from resident to attending salary is one of the largest single-year income increases in any profession. Sequencing decisions matters more than the decisions themselves."},{slug:"retirement-plans-private-practice-partnership-physicians",title:"Retirement Plan Options for Private-Practice and Partnership Physicians",pillar:"Retirement",stop:"transition",topic:c,read:4,excerpt:"Physician-owners have access to retirement plan structures that hospital employees do not — and the right choice depends heavily on practice size and partner age mix."}],m=e=>h.find(a=>a.slug===e),p=[{id:"school",name:"Medical school",code:"MS1–MS4",summary:"Borrowing starts. Investing usually has not.",note:["Most of the debt is taken on here. Unsubsidized federal loans build interest while you are in school, so the balance on graduation day is usually more than what you borrowed.","Write down each loan, its type and its rate. Whether a loan is a federal Direct loan decides which repayment and forgiveness options you have later."],topic:l,topicLabel:"student loans",tool:{label:"See a loan balance grow during training",to:"#plotter"}},{id:"residency",name:"Residency",code:"PGY-1 onward",summary:"A small salary, a large balance, and a choice about forgiveness.",n
21370ote:["Income-driven repayment sets the payment from income, not balance, so a resident's payment can be lower than the interest. The balance can grow even when every payment is on time.","If you may work for a nonprofit or public employer, residency payments can count toward Public Service Loan Forgiveness. Refinancing into a private loan gives that up for good.","Moonlighting paid on a 1099 has no tax taken out. Set part of it aside for tax."],topic:l,topicLabel:"loans during residency"},{id:"fellowship",name:"Fellowship",code:"Subspecialty years",summary:"More training years, and a good time to look at disability cover.",note:["Fellowship years at a qualifying employer generally keep counting toward the same 120 PSLF payments. Track the count across residency and fellowship together.","Individual disability policies are underwritten on your health when you apply. Many physicians buy an own-occupation policy in training, with an option to raise cover as income rises."],topic:d,topicLabel:"disability insurance"},{id:"contract",name:"First attending contract",code:"Attending, year one",summary:"The biggest pay rise of a career, and a contract to read line by line.",note:["Base salary is the easy number. The wRVU threshold, the bonus rate, signing-bonus repayment terms, the non-compete and who pays for tail coverage often matter more.","The jump from resident to attending pay is large. Deciding the order of big purchases before the first paycheck matters more than any single purchase."],topic:o,topicLabel:"a new attending contract",tool:{label:"Compare two offers by wRVU",to:"/tools#contract"}},{id:"mid",name:"Mid-career",code:"The long middle",summary:"Catching up on the years spent in training.",note:["A physician who starts saving at 35 has ten fewer years of compounding than a peer who started at 25. The plotter shows what that gap costs and what closes it.","Hospital employers often offer a 403(b), a 401(a) and sometimes a 457(b). With a backdoor Roth IRA, that is more tax-advantaged room than many physicians use."],topic:c,topicLabel:"catching up on retirement",tool:{label:"Run the late-start plotter",to:"#plotter"}},{id:"transition",name:"Transition",code:"Changing jobs, cutting back, retiring",summary:"Exits have costs of their own.",note:["Leaving a job covered by claims-made malpractice insurance can bring a tail coverage bill in the tens of thousands of dollars. Check who pays before you give notice.","Practice owners choose among SEP IRA, solo 401(k), 401(k) with profit sharing and cash-balance plans. Partner ages and practice size decide which fits."],topic:d,topicLabel:"tail coverage and exits",tool:{label:"Plan a tail coverage reserve",to:"/tools#tail"}}],g=[{slug:"/services",label:"Career stages"},{slug:"/blog",label:"Articles"},{slug:"/tools",label:"Tools"},{slug:"/about",label:"About"},{slug:"/contact",label:"Contact"}];function v(e,a){let i=e&&"/"!==e?e.replace(/\/$/,""):"";return a.startsWith("#")||/^https?:/.test(a)?a:"/"===a?i||"/":`${i}${a}`.replace(/\/+/g,"/")}function u(){let e=document.getElementById("advisor");if(!e)return;let a=window.matchMedia("(prefers-reduced-motion: reduce)").matches;e.scrollIntoView({behavior:a?"auto":"smooth",block:"start"})}function b(){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/clinic/fonts/ahn-roman.woff2"}),(0,a.jsx)("link",{rel:"preload",as:"font",type:"font/woff2",crossOrigin:"anonymous",href:"/clinic/fonts/ahm.woff2"})]})}function f({size:e=30}){return(0,a.jsxs)("svg",{width:e,height:e,viewBox:"0 0 32 32",fill:"none","aria-hidden":!0,className:"vmd-mark",children:[(0,a.jsx)("rect",{x:"2.5",y:"5.5",width:"27",height:"22",rx:"6",fill:"var(--vmd-sage-100)",stroke:"var(--vmd-pine)",strokeWidth:"1.6"}),(0,a.jsx)("path",{d:"M8 21.5c3.2 0 4.6-2.4 6.8-5.2 2.2-2.8 4.4-4.3 9.2-4.3",stroke:"var(--vmd-pine)",strokeWidth:"1.9",strokeLinecap:"round"}),(0,a.jsx)("circle",{cx:"24",cy:"12",r:"2.6",fill:"var(--vmd-coral)"})]})}function x({children:e}){return(0,a.jsxs)("div",{className:"vmd-root shell-vmd",children:[(0,a.jsx)(b,{}),(0,a.jsx)("a",{className:"vmd-skip",href:"#main-content",children:"Skip to main content"}),e]})}function y(e,a){return!!e&&(e===a||"/blog"===a&&e.startsWith("/blog/"))}function w({siteBasePath:e,currentSlug:t}){let{open:n,toggle:o}=(0,s.useMobileMenu)(),l="/"===t||"/contact"===t?"#advisor":v(e,"/contact");return(0,a.jsxs)("header",{className:"vmd-banner",children:[(0,a.jsxs)("div",{className:"vmd-banner-top",children:[(0,a.jsxs)(i.default,{href:v(e,"/"),className:"vmd-brand","aria-label":`${r}, home`,children:[(0,a.jsx)(f,{}),(0,a.jsxs)("span",{className:"vmd-brand-name",children:["Vantage MD ",(0,a.jsx)("span",{children:"Wealth"})]})]}),(0,a.jsx)(i.default,{href:l,className:"vmd-btn vmd-btn--coral vmd-banner-cta",children:"Find an advisor"}),(0,a.jsxs)("button",{type:"button",className:"vmd-menu-btn","aria-expanded":n,"aria-controls":"vmd-phone-menu",onClick:o,children:[(0,a.jsx)("span",{className:"vmd-menu-icon","aria-hidden":!0}),(0,a.jsx)("span",{children:n?"Close":"Menu"})]})]}),(0,a.jsxs)("dl",{className:"vmd-banner-fields",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"For"}),(0,a.jsx)("dd",{children:"Physicians, residents and other clinicians"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Status"}),(0,a.jsx)("dd",{children:(0,a.jsxs)("span",{className:"vmd-pill",children:[(0,a.jsx)("span",{className:"vmd-pill-dot","aria-hidden":!0}),"Accepting questions"]})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Match"}),(0,a.jsx)("dd",{children:"4 short steps"})]})]}),(0,a.jsx)("nav",{className:"vmd-rail-nav","aria-label":"Primary",children:(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/"),className:"vmd-rail-link","aria-current":"/"===t?"page":void 0,children:"Timeline"})}),g.map(s=>(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,s.slug),className:"vmd-rail-link","aria-current":y(t,s.slug)?"page":void 0,children:s.label})},s.slug))]})}),(0,a.jsx)("p",{className:"vmd-banner-note",children:"Education only. Please keep patient and health information out of anything you send us."}),n?(0,a.jsxs)("nav",{id:"vmd-phone-menu",className:"vmd-phone-menu","aria-label":"Menu",children:[(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/"),className:"vmd-phone-link","aria-current":"/"===t?"page":void 0,children:"Timeline"})}),g.map(s=>(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,s.slug),className:"vmd-phone-link","aria-current":y(t,s.slug)?"page":void 0,children:s.label})},s.slug)),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/advisors"),className:"vmd-phone-link",children:"For advisors"})})]}),(0,a.jsx)("p",{className:"vmd-phone-status",children:(0,a.jsxs)("span",{className:"vmd-pill",children:[(0,a.jsx)("span",{className:"vmd-pill-dot","aria-hidden":!0}),"Accepting questions"]})})]}):null]})}function _({siteBasePath:e,currentSlug:t}){let s="/"===t||"/contact"===t?"#advisor":v(e,"/contact");return(0,a.jsxs)("div",{className:"vmd-sticky",children:[(0,a.jsxs)("p",{className:"vmd-sticky-t",children:["Matched with an advisor for ",n]}),(0,a.jsx)(i.default,{href:s,className:"vmd-btn vmd-btn--coral",children:"Find an advisor"})]})}function k({siteBasePath:e}){return(0,a.jsx)("footer",{className:"vmd-footer",children:(0,a.jsxs)("div",{className:"vmd-footer-inner",children:[(0,a.jsxs)("div",{className:"vmd-footer-brand",children:[(0,a.jsxs)("p",{className:"vmd-footer-name",children:[(0,a.jsx)(f,{size:26}),r]}),(0,a.jsxs)("p",{className:"vmd-footer-tag",children:["Articles and tools for ",n,", arranged by career stage, and a way to be matched with a licensed financial advisor who specializes in ",n,"."]})]}),(0,a.jsxs)("nav",{className:"vmd-footer-nav","aria-label":"Footer",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"vmd-footer-h",children:"Read and run"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/services"),children:"Career stages"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/blog"),children:"Articles"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/tools"),children:"Tools"})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"vmd-footer-h",children:"This site"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/about"),children:"About"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/editorial-policy"),children:"Editorial policy"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/contact"),children:"Contact"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/advisors"),children:"For advisors"})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"vmd-footer-h",children:"Legal"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/privacy"),children:"Privacy"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/terms"),children:"Terms"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/disclaimer"),children:"Disclaimer"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/do-not-sell"),children:"Do not sell or share"})})]})]})]}),(0,a.jsxs)("p",{className:"vmd-footer-note",children:[r," is an educational publisher. It does not give personalized investment, tax, legal, insurance or medical advice, and reading it or asking to be matched does not create an advisory relationship. Licensed financial advisors may pay for introductions. Tools are illustrations built on the assumptions shown beside them, not forecasts. Please do not send patient or health information."]})]})})}var j=e.i(247167),N=e.i(3303);let S=j.default.env.NEXT_PUBLIC_TURNSTILE_SITE_KEY;function A({block:e,siteKey:i,siteName:s,pageSlug:r,pageTitle:n,presetTopic:o,variant:l="client"}){let c=e.steps??[{title:e.title}],d=c.length,[h,m]=(0,t.useState)(1),[p,g]=(0,t.useState)(""),[v,u]=(0,t.useState)(!1),[b,f]=(0,t.useState)({kind:"idle"}),x=(0,t.useRef)(null),y=(0,t.useRef)(null),w=(0,t.useRef)(null),_="advisor"===l?"vmd-a":"vmd-q";(0,t.useEffect)(()=>{o&&(g(o),m(1))},[o]);let k=(0,t.useRef)(!1),j=()=>{k.current=!0};function z(){(function(e){let a=x.current;if(!a)return!0;for(let i of Array.from(a.querySelectorAll(`[data-step="${e}"] input, [data-step="${e}"] select, [data-step="${e}"] textarea`)))if(!i.reportValidity())return!1;return!0}
21370)(h)&&(m(e=>Math.min(e+1,d)),j())}async function C(a){if(a.preventDefault(),h<d)return void z();let t=a.currentTarget,o=new FormData(t),l=String(o.get("company_website")??"").trim(),c=String(o.get("cf-turnstile-response")??"").trim(),p={};for(let[e,a]of o.entries())"company_website"!==e&&"cf-turnstile-response"!==e&&"string"==typeof a&&(p[e]=a.trim());u(!0);try{let a=await fetch("/api/leads",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({siteKey:i,siteName:s,pageSlug:r,pageTitle:n,sourceUrl:window.location.href,honeypot:l,turnstileToken:c,fields:p})}),o=await a.json().catch(()=>null);if(!a.ok)throw Error(o?.message??"We could not send your request just now. Please try again.");t.reset(),g(""),m(1),f({kind:"success",message:e.successMessage??"Thank you. We have your request."}),window.setTimeout(()=>w.current?.focus(),0)}catch(e){f({kind:"error",message:e instanceof Error?e.message:"We could not send your request just now. Please try again."})}finally{u(!1)}}if((0,t.useEffect)(()=>{k.current&&(k.current=!1,y.current?.focus())},[h]),"success"===b.kind)return(0,a.jsxs)("div",{ref:w,tabIndex:-1,className:"vmd-form vmd-form--done",role:"status",children:[(0,a.jsx)("p",{className:"vmd-label",children:"advisor"===l?"Application received":"Request received"}),(0,a.jsx)("h3",{className:"vmd-form-h",children:"Thank you."}),(0,a.jsx)("p",{children:b.message}),"advisor"===l?null:(0,a.jsxs)("ol",{className:"vmd-done-steps",children:[(0,a.jsx)("li",{children:"We review your answers."}),(0,a.jsx)("li",{children:"We contact you to confirm what you need."}),(0,a.jsx)("li",{children:"We match you with a licensed financial advisor who specializes in physicians and clinicians. You decide what happens next."})]})]});let M=e=>{let i=`${_}-${e.name}`,t=e.required??!1;if("hidden"===e.type)return(0,a.jsx)("input",{type:"hidden",name:e.name,value:e.value??""},e.name);if("checkbox"===e.type)return(0,a.jsxs)("label",{className:"vmd-check",children:[(0,a.jsx)("input",{type:"checkbox",name:e.name,value:"yes",required:t}),(0,a.jsx)("span",{children:e.label})]},e.name);let s=!t&&!e.label.toLowerCase().includes("optional"),r=(0,a.jsxs)("label",{htmlFor:i,className:"vmd-field-label",children:[e.label,s?(0,a.jsx)("span",{className:"vmd-optional",children:" (optional)"}):null]});if("select"===e.type){let s="help_topic"===e.name;return(0,a.jsxs)("div",{className:"vmd-field",children:[r,(0,a.jsxs)("select",{id:i,name:e.name,required:t,className:"vmd-input vmd-select",...s?{value:p,onChange:e=>g(e.target.value)}:{defaultValue:""},children:[(0,a.jsx)("option",{value:"",disabled:!0,children:"Choose one"}),(e.options??[]).map(e=>(0,a.jsx)("option",{value:e,children:e},e))]})]},e.name)}if("textarea"===e.type){let s=`${i}-hint`;return(0,a.jsxs)("div",{className:"vmd-field",children:[r,"client"===l?(0,a.jsx)("p",{id:s,className:"vmd-field-hint",children:"No patient or health details, please."}):null,(0,a.jsx)("textarea",{id:i,name:e.name,required:t,rows:4,className:"vmd-input","aria-describedby":"client"===l?s:void 0})]},e.name)}return(0,a.jsxs)("div",{className:"vmd-field",children:[r,(0,a.jsx)("input",{id:i,name:e.name,type:e.type,required:t,className:"vmd-input",autoComplete:"email"===e.name?"email":"phone"===e.name?"tel":"full_name"===e.name?"name":"location"===e.name?"postal-code":"off"})]},e.name)};return(0,a.jsxs)("form",{ref:x,className:"vmd-form",onSubmit:C,"aria-label":"advisor"===l?"Advisor application":"Advisor match request",children:[(0,a.jsxs)("div",{className:"vmd-form-progress",children:[(0,a.jsxs)("p",{className:"vmd-label vmd-mono",children:["Step ",h," of ",d]}),(0,a.jsx)("ol",{className:"vmd-form-steps","aria-hidden":!0,children:c.map((e,i)=>(0,a.jsx)("li",{className:i+1<h?"is-done":i+1===h?"is-now":""},e.title))})]}),"client"===l?(0,a.jsxs)("p",{className:"vmd-alert",role:"note",children:[(0,a.jsx)("span",{className:"vmd-alert-mark","aria-hidden":!0,children:"!"}),(0,a.jsx)("span",{children:"Please do not send patient or health information, yours or anyone else's. No question here needs it, and a match does not depend on it."})]}):null,c.map((i,t)=>(0,a.jsxs)("fieldset",{"data-step":t+1,hidden:h!==t+1,className:"vmd-form-step",children:[(0,a.jsxs)("legend",{className:"vmd-sr",children:["Step ",t+1," of ",d,": ",i.title]}
21370),(0,a.jsx)("h3",{ref:h===t+1?y:void 0,tabIndex:-1,className:"vmd-form-h",children:i.title}),i.description?(0,a.jsx)("p",{className:"vmd-form-d",children:i.description}):null,e.fields.filter(e=>(e.step??1)===t+1).map(M)]},i.title)),(0,a.jsxs)("label",{className:"vmd-hp","aria-hidden":"true",children:[(0,a.jsx)("span",{children:"Leave this blank"}),(0,a.jsx)("input",{autoComplete:"off",name:"company_website",tabIndex:-1,type:"text"})]}),S?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(N.default,{src:"https://challenges.cloudflare.com/turnstile/v0/api.js",strategy:"afterInteractive",async:!0,defer:!0}),(0,a.jsx)("div",{className:"cf-turnstile","data-sitekey":S,"data-theme":"light"})]}):null,(0,a.jsxs)("div",{className:"vmd-form-nav",children:[h>1?(0,a.jsx)("button",{type:"button",className:"vmd-btn vmd-btn--quiet",onClick:function(){m(e=>Math.max(1,e-1)),j()},children:"Back"}):null,h<d?(0,a.jsx)("button",{type:"button",className:"vmd-btn vmd-btn--pine",onClick:z,children:"Next step"}):(0,a.jsx)("button",{type:"submit",className:"vmd-btn vmd-btn--coral",disabled:v,children:v?"Sending…":e.submitLabel??"Get matched with an advisor"})]}),(0,a.jsx)("div",{className:`vmd-status${"error"===b.kind?" vmd-status--error":""}`,role:"error"===b.kind?"alert":"status",children:"error"===b.kind?b.message:""}),e.disclosure?(0,a.jsx)("p",{className:"vmd-disclosure",children:e.disclosure}):null]})}function z(e,a,i){if(i<=0)return 0;let t=a/100/12;return 0===t?e*i:e*(Math.pow(1+t,i)-1)/t}function C(e,a,i){if(i<=0)return 1/0;let t=a/100/12;return 0===t?e/i:e*t/(Math.pow(1+t,i)-1)}function M(e,a,i,t){return z(i,t,Math.round((a-e)*12))}function P(e,a,i,t){let s=Math.max(0,t-a)*i;return{bonus:s,total:e+s}}function T(e){return Number.isFinite(e)?`${e<0?"−":""}$${Math.round(Math.abs(e)).toLocaleString("en-US")}`:"n/a"}function E({siteBasePath:e,onAsk:t,onHome:s,openAll:r=!1,headingLevel:n=3}){let o=2===n?"h2":"h3";return(0,a.jsx)("ol",{className:"vmd-timeline",children:p.map((n,l)=>{let c,d=h.filter(e=>e.stop===n.id);return(0,a.jsxs)("li",{className:"vmd-stop",id:`stage-${n.id}`,children:[(0,a.jsx)("span",{className:"vmd-stop-node vmd-mono","aria-hidden":!0,children:String(l+1).padStart(2,"0")}),(0,a.jsxs)("details",{className:"vmd-stop-d",open:r||0===l||void 0,children:[(0,a.jsxs)("summary",{className:"vmd-stop-s",children:[(0,a.jsx)("span",{className:"vmd-stop-code vmd-mono",children:n.code}),(0,a.jsx)(o,{className:"vmd-stop-name",children:n.name}),(0,a.jsx)("span",{className:"vmd-stop-sum",children:n.summary}),(0,a.jsx)("span",{className:"vmd-stop-toggle","aria-hidden":!0})]}),(0,a.jsxs)("div",{className:"vmd-stop-body",children:[n.note.map(e=>(0,a.jsx)("p",{children:e},e)),d.length?(0,a.jsx)("ul",{className:"vmd-stop-reads","aria-label":`Articles for ${n.name.toLowerCase()}`,children:d.map(t=>(0,a.jsxs)("li",{children:[(0,a.jsx)(i.default,{href:v(e,`/blog/${t.slug}`),className:"vmd-link",children:t.title}),(0,a.jsxs)("span",{className:"vmd-mono vmd-stop-min",children:[" ",t.read," min"]})]},t.slug))}):null,(0,a.jsxs)("p",{className:"vmd-stop-actions",children:[(0,a.jsxs)("button",{type:"button",className:"vmd-btn vmd-btn--line vmd-btn--sm",onClick:()=>t(n.topic),children:["Ask an advisor about ",n.topicLabel]}),n.tool?(0,a.jsx)(i.default,{href:(c=n.tool.to).startsWith("#")?s?c:v(e,`/tools${c}`):v(e,c),className:"vmd-link vmd-link--quiet",children:n.tool.label}):null]})]})]})]},n.id)})})}function F({series:e,xLabel:i,xTicks:s,xFormat:r=e=>String(e),title:n,summary:o,height:l=340,marker:c,baseline:d}){let h=(0,t.useId)(),m=e.flatMap(e=>e.points.map(e=>e.x)),p=Math.min(...m,...s),g=Math.max(...m,...s),{top:v,step:u}=function(e){if(e<=0)return{top:1,step:1};let a=e/5,i=Math.pow(10,Math.floor(Math.log10(a))),t=a/i,s=(t<=1?1:t<=2?2:t<=2.5?2.5:t<=5?5:10)*i;return{top:Math.ceil(e/s)*s,step:s}}(Math.max(1,...e.flatMap(e=>e.points.map(e=>e.y)),d?.y??0)),b=e=>62+(e-p)/Math.max(1e-9,g-p)*560,f=e=>14+(1-e/v)*(l-14-44),x=[];for(let e=0;e<=v+1e-6;e+=u)x.push(e);let[y,w]=(0,t.useState)(null),_=null===y?null:Math.round(y),k=(e,a)=>{let i=e.points[0];for(let t of e.points)Math.abs(t.x-a)<Math.abs(i.x-a)&&(i=t);return i&&.51>=Math.abs(i.x-a)?i.y:null},j=null===_?0:b(_)/640*100;return(0,a.jsxs)("figure",{className:"vmd-chart",children:[(0,a.jsxs)("figcaption",{className:"vmd-chart-cap",children:[(0,a.jsx)("span",{className:"vmd-chart-title",children:n}),(0,a.jsx)("span",{className:"vmd-legend",children:e.map(e=>(0,a.jsxs)("span",{className:"vmd-legend-item",children:[(0,a.jsx)("svg",{width:"26",height:"10","aria-hidden":!0,
21370children:(0,a.jsx)("line",{x1:"1",y1:"5",x2:"25",y2:"5",stroke:e.color,strokeWidth:e.width??2.5,strokeDasharray:e.dash,strokeLinecap:"round"})}),e.label]},e.key))})]}),(0,a.jsxs)("div",{className:"vmd-chart-frame",children:[(0,a.jsxs)("svg",{viewBox:`0 0 640 ${l}`,className:"vmd-chart-svg",role:"img","aria-labelledby":`${h}-d`,children:[(0,a.jsx)("desc",{id:`${h}-d`,children:o}),x.map(e=>{let i;return(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:62,x2:622,y1:f(e),y2:f(e),className:0===e?"vmd-axis":"vmd-grid"}),(0,a.jsx)("text",{x:52,y:f(e),className:"vmd-tick",textAnchor:"end",dominantBaseline:"middle",children:(i=Math.abs(e))>=1e6?`$${(i/1e6).toFixed(i>=1e7?0:2).replace(/\.?0+$/,"")}M`:i>=1e3?`$${Math.round(i/1e3)}k`:`$${Math.round(i)}`})]},e)}),s.map(e=>(0,a.jsx)("text",{x:b(e),y:l-44+20,className:"vmd-tick",textAnchor:"middle",children:r(e)},e)),(0,a.jsx)("text",{x:342,y:l-6,className:"vmd-tick vmd-tick--label",textAnchor:"middle",children:i}),d?(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:62,x2:622,y1:f(d.y),y2:f(d.y),className:"vmd-baseline"}),(0,a.jsx)("text",{x:622,y:f(d.y)+18,textAnchor:"end",className:"vmd-tick",children:d.label})]}):null,c?(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:b(c.x),x2:b(c.x),y1:14,y2:l-44,className:"vmd-marker"}),(0,a.jsx)("text",{x:b(c.x)+6,y:26,className:"vmd-tick",children:c.label})]}):null,e.map(e=>(0,a.jsx)("path",{d:e.points.map((e,a)=>`${a?"L":"M"}${b(e.x).toFixed(1)} ${f(e.y).toFixed(1)}`).join(" "),fill:"none",stroke:e.color,strokeWidth:e.width??2.5,strokeDasharray:e.dash,strokeLinejoin:"round",strokeLinecap:"round",className:"vmd-line"},e.key)),e.map(e=>{let i=e.points[e.points.length-1];return i?(0,a.jsx)("circle",{cx:b(i.x),cy:f(i.y),r:4.5,fill:e.color,stroke:"var(--vmd-sheet)",strokeWidth:2},`${e.key}-end`):null}),null!==_?(0,a.jsxs)("g",{"aria-hidden":!0,children:[(0,a.jsx)("line",{x1:b(_),x2:b(_),y1:14,y2:l-44,className:"vmd-cross"}),e.map(e=>{let i=k(e,_);return null===i?null:(0,a.jsx)("circle",{cx:b(_),cy:f(i),r:4.5,fill:e.color,stroke:"var(--vmd-sheet)",strokeWidth:2},e.key)})]}):null,(0,a.jsx)("rect",{x:62,y:14,width:560,height:l-14-44,fill:"transparent",onPointerMove:function(e){let a=e.currentTarget.ownerSVGElement;if(!a)return;let i=a.getBoundingClientRect(),t=p+((e.clientX-i.left)/i.width*640-62)/560*(g-p);w(Math.min(g,Math.max(p,t)))},onPointerLeave:()=>w(null)})]}),null!==_?(0,a.jsxs)("div",{className:`vmd-tip${j>60?" vmd-tip--left":""}`,style:{left:`${j}%`},"aria-hidden":!0,children:[(0,a.jsxs)("p",{className:"vmd-tip-h",children:[i.replace(/\s*\(.*\)$/,"")," ",r(_)]}),e.map(e=>{let i=k(e,_);return null===i?null:(0,a.jsxs)("p",{className:"vmd-tip-row",children:[(0,a.jsx)("span",{className:"vmd-tip-key",style:{background:e.color}}),(0,a.jsx)("span",{children:e.label}),(0,a.jsx)("span",{className:"vmd-mono",children:T(i)})]},e.key)})]}):null]})]})}function L({id:e,label:i,value:t,min:s,max:r,step:n,onChange:o,format:l,hint:c}){return(0,a.jsxs)("div",{className:"vmd-dial",children:[(0,a.jsxs)("div",{className:"vmd-dial-top",children:[(0,a.jsx)("label",{htmlFor:e,className:"vmd-dial-label",children:i}),(0,a.jsx)("output",{htmlFor:e,className:"vmd-dial-out vmd-mono",children:l(t)})]}),(0,a.jsx)("input",{id:e,type:"range",min:s,max:r,step:n,value:t,"aria-valuetext":l(t),"aria-describedby":c?`${e}-h`:void 0,onChange:e=>o(Number(e.target.value)),className:"vmd-range",style:{"--vmd-fill":`${(t-s)/(r-s)*100}%`}}),c?(0,a.jsx)("p",{id:`${e}-h`,className:"vmd-dial-hint",children:c}):null]})}let I="#2F6FB0",$="#1E7F5C",B=e=>`${e.toFixed(1).replace(/\.0$/,"")}%`,q=e=>`${e} ${1===e?"year":"years"}`;function R({label:e,value:i,note:t,tone:s}){return(0,a.jsxs)("div",{className:`vmd-readout${s?` vmd-readout--${s}`:""}`,children:[(0,a.jsx)("dt",{children:e}),(0,a.jsxs)("dd",{children:[(0,a.jsx)("span",{className:"vmd-mono vmd-readout-v",children:i}),t?(0,a.jsx)("span",{className:"vmd-readout-n",children:t}):null]})]})}function H({idPrefix:e="p"}){let[i,s]=(0,t.useState)(35),[r,n]=(0,t.useState)(1500),[o,l]=(0,t.useState)(6),[c,d]=(0,t.useState)(2e5),[h,m]=(0,t.useState)(6.5),[p,g]=(0,t.useState)(4),[v,u]=(0,t.useState)(0),b=i+5,f=(0,t.useMemo)(()=>{let e=[{key:"early",label:"Start at 25",start:25,color:I,dash:"7 6"},{key:"you",label:`Start at ${i} (you)`,start:i,color:$,width:3.25}];return b<65&&e.push({key:"later",label:`Wait until ${b}`,start:b,color:"#8C5BA8",dash:"2 5"}),e},[i,b]),x=Math.min(25,i),y=f.map(e=>{let a=[];for(let i=x;i<=65;i+=1)a.push({x:i,y:i<e.start?0:M(e.start,i,r,o)});return{key:e.key,label:e.label,color:e.color,dash:e.dash,width:e.width,points:a}}),w=e=>z(r,o,(65-e)*12),_=w(25),k=w(i),j=b<65?w(b):null,N=_-k,S=C(_,o,(65-i)*12),A=function(e,a,i,t){let s=a/100/12,r=e,n=0,o=0,l=[{year:0,principal:r,unpaidInterest:0,total:r,paid:0}
21370];for(let e=1;e<=12*i;e+=1){n+=r*s;let a=Math.min(t,r+n);o+=a;let i=Math.min(a,n);n-=i,a-=i,r-=a,e%12==0&&l.push({year:e/12,principal:r,unpaidInterest:n,total:r+n,paid:o})}return l}(c,h,p,v),P=A[A.length-1],E=P.total+P.paid-c,D=[];for(let e=5*Math.ceil(x/5);e<=65;e+=5)D.push(e);D.includes(x)||D.unshift(x);let W=D.filter(e=>e%5==0);return(0,a.jsxs)("div",{className:"vmd-tool",id:"plotter-tool",children:[(0,a.jsxs)("div",{className:"vmd-tool-inputs",children:[(0,a.jsxs)("fieldset",{className:"vmd-set",children:[(0,a.jsx)("legend",{className:"vmd-set-h",children:"Investing"}),(0,a.jsx)(L,{id:`${e}-age`,label:"Age you start investing",value:i,min:22,max:60,step:1,onChange:s,format:e=>`${e}`}),(0,a.jsx)(L,{id:`${e}-monthly`,label:"Monthly amount",value:r,min:100,max:8e3,step:100,onChange:n,format:T}),(0,a.jsx)(L,{id:`${e}-ret`,label:"Assumed annual return",value:o,min:0,max:12,step:.5,onChange:l,format:B,hint:"Before fees, taxes and inflation. Not a prediction."})]}),(0,a.jsxs)("fieldset",{className:"vmd-set",children:[(0,a.jsx)("legend",{className:"vmd-set-h",children:"Training loan"}),(0,a.jsx)(L,{id:`${e}-loan`,label:"Loan balance today",value:c,min:0,max:5e5,step:5e3,onChange:d,format:T}),(0,a.jsx)(L,{id:`${e}-lrate`,label:"Loan interest rate",value:h,min:0,max:12,step:.1,onChange:m,format:B}),(0,a.jsx)(L,{id:`${e}-years`,label:"Years of training left",value:p,min:1,max:10,step:1,onChange:g,format:q}),(0,a.jsx)(L,{id:`${e}-pay`,label:"Monthly loan payment during training",value:v,min:0,max:3e3,step:25,onChange:u,format:T})]})]}),(0,a.jsxs)("div",{className:"vmd-tool-out",children:[(0,a.jsx)(F,{title:"Balance by age, same monthly amount",summary:`Illustration. Investing ${T(r)} a month at ${B(o)} a year: starting at 25 reaches ${T(_)} at 65; starting at ${i} reaches ${T(k)}${null!==j?`; waiting until ${b} reaches ${T(j)}`:""}. The table below lists the values.`,series:y,xLabel:"Age",xTicks:W}),(0,a.jsxs)("dl",{className:"vmd-readouts","aria-live":"polite",children:[(0,a.jsx)(R,{label:"Start at 25, at 65",value:T(_),note:`${T(12*r*40)} paid in`}),(0,a.jsx)(R,{label:`Start at ${i}, at 65`,value:T(k),note:`${T(12*r*Math.max(0,65-i))} paid in`}),null!==j?(0,a.jsx)(R,{label:`Wait until ${b}, at 65`,value:T(j),note:`${T(12*r*(65-b))} paid in`}):null,i>25?(0,a.jsx)(R,{label:"Cost of starting late",value:T(N),tone:"alert",note:`the gap at 65 between starting at 25 and at ${i}`}):null,i>25?(0,a.jsx)(R,{label:`Monthly amount from ${i} to match`,value:Number.isFinite(S)?T(S):"n/a",note:"what closes the gap by 65"}):null]}),(0,a.jsx)(F,{title:"Training loan while you train",summary:`Illustration. A ${T(c)} loan at ${B(h)} with ${T(v)} a month for ${q(p)} is ${T(P.total)} at the end of training.`,series:[{key:"owed",label:"Amount owed",color:"var(--vmd-coral)",width:3,points:A.map(e=>({x:e.year,y:e.total}))}],baseline:{y:c,label:`Starting balance ${T(c)}`},xLabel:"Years of training",xTicks:A.map(e=>e.year),height:250}),(0,a.jsxs)("dl",{className:"vmd-readouts",children:[(0,a.jsx)(R,{label:`Owed after ${q(p)}`,value:T(P.total),tone:P.total>c?"alert":void 0,note:P.unpaidInterest>0?`${T(P.unpaidInterest)} of it is unpaid interest`:void 0}),(0,a.jsx)(R,{label:"Interest charged",value:T(E),note:`${T(P.paid)} paid in total`})]}),(0,a.jsxs)("details",{className:"vmd-table-wrap",children:[(0,a.jsx)("summary",{children:"Show these numbers as a table"}),(0,a.jsxs)("table",{className:"vmd-table",children:[(0,a.jsxs)("caption",{children:["Balance at each age, investing ",T(r)," a month at ",B(o)," (illustration)"]}),(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"col",children:"Age"}),f.map(e=>(0,a.jsx)("th",{scope:"col",children:e.label},e.key))]})}),(0,a.jsx)("tbody",{children:D.map(e=>(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"row",children:e}),f.map(i=>(0,a.jsx)("td",{children:e<i.start?"not started":T(M(i.start,e,r,o))},i.key))]},e))})]}),(0,a.jsxs)("table",{className:"vmd-table",children:[(0,a.jsx)("caption",{children:"Training loan at the end of each year (illustration)"}),(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"col",children:"Year"}),(0,a.jsx)("th",{scope:"col",children:"Principal"}),(0,a.jsx)("th",{scope:"col",children:"Unpaid interest"}),(0,a.jsx)("th",{scope:"col",children:"Amount owed"})]})}),(0,a.jsx)("tbody",{children:A.map(e=>(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"row",children:e.year}),(0,a.jsx)("td",{children:T(e.principal)}),(0,a.jsx)("td",{children:T(e.unpaidInterest)}),(0,a.jsx)("td",{children:T(e.total)})]},e.year))})]})]})]}),(0,a.jsxs)("div",{className:"vmd-method",children:[(0,a.jsx)("h3",{className:"vmd-method-h",children:"Method"}),(0,a.jsxs)("p",{children:[(0,a.jsx)("strong",{children:"Illustration, not a forecast."})," Every number comes from the assumptions above, which you can change. Real returns vary from year to year and can be negative; fees, taxes and inflation are left out."]}),(0,a.jsxs)("ul",{children:[(0,a.jsxs)("li",{children:["Investing: the same amount at the end of every month from the starting age until ",65,", growing at the annual rate ÷ 12 each month. Balance after n months = amount × ((1 + i)",(0,a.jsx)("sup",{children:"n"})," − 1) ÷ i, where i = rate ÷ 12."]}),(0,a.jsxs)("li",{children:["Matching amount: the monthly figure that gives the start-at-25 total by ",65," from your starting age, using the same formula solved for the amount."]}),(0,a.jsx)("li",{children:"Loan: simple interest. Each month adds balance × (rate ÷ 12) to unpaid interest, which is not added to the principal. A payment clears unpaid interest first, then principal. Federal Direct loans charge simple interest, but some events can add unpaid interest to the principal, which would make the balance grow faster than shown."})]})]})]})}
21370function D({name:e,offer:i,set:t,idPrefix:s}){return(0,a.jsxs)("fieldset",{className:"vmd-set",children:[(0,a.jsx)("legend",{className:"vmd-set-h",children:e}),(0,a.jsx)(L,{id:`${s}-base`,label:"Base salary",value:i.base,min:15e4,max:7e5,step:5e3,onChange:e=>t({...i,base:e}),format:T}),(0,a.jsx)(L,{id:`${s}-thr`,label:"wRVU threshold for the bonus",value:i.threshold,min:2e3,max:12e3,step:100,onChange:e=>t({...i,threshold:e}),format:e=>e.toLocaleString("en-US")}),(0,a.jsx)(L,{id:`${s}-rate`,label:"Bonus per wRVU above it",value:i.rate,min:0,max:120,step:1,onChange:e=>t({...i,rate:e}),format:T})]})}function W(){let[e,i]=(0,t.useState)({base:26e4,threshold:6200,rate:45}),[s,r]=(0,t.useState)({base:25e4,threshold:5200,rate:38}),[n,o]=(0,t.useState)(6e3),l=e=>{let a=[];for(let i=3e3;i<=1e4;i+=250)a.push({x:i,y:P(e.base,e.threshold,e.rate,i).total});return a},c=P(e.base,e.threshold,e.rate,n),d=P(s.base,s.threshold,s.rate,n),h=c.total-d.total,m=null,p=Math.sign(P(e.base,e.threshold,e.rate,3e3).total-P(s.base,s.threshold,s.rate,3e3).total);for(let a=3010;a<=1e4;a+=10){let i=Math.sign(P(e.base,e.threshold,e.rate,a).total-P(s.base,s.threshold,s.rate,a).total);if(i!==p&&0!==i){m=a;break}p=i}return(0,a.jsxs)("div",{className:"vmd-tool",children:[(0,a.jsxs)("div",{className:"vmd-tool-inputs",children:[(0,a.jsx)(D,{name:"Offer A",offer:e,set:i,idPrefix:"ca"}),(0,a.jsx)(D,{name:"Offer B",offer:s,set:r,idPrefix:"cb"}),(0,a.jsxs)("fieldset",{className:"vmd-set",children:[(0,a.jsx)("legend",{className:"vmd-set-h",children:"Your year"}),(0,a.jsx)(L,{id:"c-wrvu",label:"wRVUs you expect to produce",value:n,min:3e3,max:1e4,step:100,onChange:o,format:e=>e.toLocaleString("en-US"),hint:"Ask each practice for what physicians in the same role actually produce."})]})]}),(0,a.jsxs)("div",{className:"vmd-tool-out",children:[(0,a.jsx)(F,{title:"Total pay by annual wRVUs",summary:`Illustration. At ${n.toLocaleString("en-US")} wRVUs, offer A pays ${T(c.total)} and offer B pays ${T(d.total)}.`,series:[{key:"a",label:"Offer A",color:I,dash:"7 6",points:l(e)},{key:"b",label:"Offer B",color:$,width:3,points:l(s)}],marker:{x:n,label:"your year"},xLabel:"Annual wRVUs",xTicks:[3e3,4e3,5e3,6e3,7e3,8e3,9e3,1e4],xFormat:e=>`${e/1e3}k`,height:300}),(0,a.jsxs)("dl",{className:"vmd-readouts","aria-live":"polite",children:[(0,a.jsx)(R,{label:"Offer A at your wRVUs",value:T(c.total),note:`bonus ${T(c.bonus)}`}),(0,a.jsx)(R,{label:"Offer B at your wRVUs",value:T(d.total),note:`bonus ${T(d.bonus)}`}),(0,a.jsx)(R,{label:"Difference",value:T(Math.abs(h)),note:0===h?"the offers pay the same":`more from offer ${h>0?"A":"B"}`}),(0,a.jsx)(R,{label:"Lines cross at",value:null===m?"no crossing":`${m.toLocaleString("en-US")} wRVUs`,note:null===m?"between 3,000 and 10,000":"about, on a 10-wRVU grid"})]}),(0,a.jsxs)("details",{className:"vmd-table-wrap",children:[(0,a.jsx)("summary",{children:"Show these numbers as a table"}),(0,a.jsxs)("table",{className:"vmd-table",children:[(0,a.jsx)("caption",{children:"Total pay at each wRVU level (illustration)"}),(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"col",children:"Annual wRVUs"}),(0,a.jsx)("th",{scope:"col",children:"Offer A"}),(0,a.jsx)("th",{scope:"col",children:"Offer B"})]})}),(0,a.jsx)("tbody",{children:[4e3,5e3,5500,6e3,6500,7e3,8e3,9e3].map(i=>(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"row",children:i.toLocaleString("en-US")}),(0,a.jsx)("td",{children:T(P(e.base,e.threshold,e.rate,i).total)}),(0,a.jsx)("td",{children:T(P(s.base,s.threshold,s.rate,i).total)})]},i))})]})]})]}),(0,a.jsxs)("div",{className:"vmd-method",children:[(0,a.jsx)("h3",{className:"vmd-method-h",children:"Method"}),(0,a.jsxs)("p",{children:[(0,a.jsx)("strong",{children:"Illustration."})," Total pay = base salary + (wRVUs − threshold) × bonus rate, and the bonus is zero below the threshold. Offer A is the example from our contract article: $260,000 base and $45 per wRVU above 6,200, in a role where physicians produce 5,800 to 6,000 wRVUs. Offer B is made up for comparison."]}),(0,a.jsx)("p",{children:"Real contracts add quality bonuses, caps, clawbacks, call pay and benefits, which this leaves out."})]})]})}function O(){let[e,i]=(0,t.useState)(3e4),[s,r]=(0,t.useState)(24),[n,o]=(0,t.useState)(3),l=C(e,n,s),c=e-l*s,d=[6,12,18,24,36,48,60].filter(e=>e<=s);return d.includes(s)||d.push(s),(0,a.jsxs)("div",{className:"vmd-tool vmd-tool--compact",children:[(0,a.jsx)("div",{className:"vmd-tool-inputs",children:(0,a.jsxs)("fieldset",{className:"vmd-set",children:[(0,a.jsx)("legend",{className:"vmd-set-h",children:"Your numbers"}),(0,a.jsx)(L,{id:"t-quote",label:"Tail coverage quote",value:e,min:5e3,max:15e4,step:1e3,onChange:i,format:T,hint:"An example figure. Ask your carrier for a real quote."}),(0,a.jsx)(L,{id:"t-months",label:"Months until you might leave",value:s,min:3,max:60,step:1,onChange:r,format:e=>`${e} months`}),(0,a.jsx)(L,{id:"t-yield",label:"Interest on the savings, per year",value:n,min:0,max:6,step:.25,onChange:o,format:B})]})}),(0,a.jsxs)("div",{className:"vmd-tool-out",children:[(0,a.jsxs)("dl",{className:"vmd-readouts vmd-readouts--big","aria-live":"polite",children:[(0,a.jsx)(R,{label:"Set aside each month",value:T(l),tone:"alert",note:`for ${s} months`}),(0,a.jsx)(R,{label:"Interest earned along the way",value:T(c)})]}),(0,a.jsx)("div",{className:"vmd-table-wrap",children:(0,a.jsxs)("table",{className:"vmd-table",children:[(0,a.jsx)("caption",{children:"Reserve balance by month (illustration)"}),(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"col",children:"Month"}),(0,a.jsx)("th",{scope:"col",children:"Saved so far"}),(0,a.jsx)("th",{scope:"col",children:"Share of the quote"})]})}),(0,a.jsx)("tbody",{children:d.map(i=>{let t=z(l,n,i);return(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{scope:"row",children:i}),(0,a.jsx)("td",{children:T(t)}),(0,a.jsxs)("td",{children:[Math.round(t/e*100),"%"]})]},i)})})]})})]}),(0,a.jsxs)("div",{className:"vmd-method",children:[(0,a.jsx)("h3",{className:"vmd-method-h",children:"Method"}),(0,a.jsxs)("p",{children:[(0,a.jsx)("strong",{children:"Illustration."})," Monthly amount = quote × i ÷ ((1 + i)",(0,a.jsx)("sup",{children:"n"})," − 1), where i is the yearly rate ÷ 12 and n the number of months, with deposits at the end of each month. The quote itself is yours to find: tail prices depen
21370d on specialty, state, limits and years covered."]})]})]})}let Y=e=>z(1500,6,(65-e)*12);function V({crumb:e,title:i,lede:t,children:s}){return(0,a.jsx)("header",{className:"vmd-pagehead",children:(0,a.jsxs)("div",{className:"vmd-wrap",children:[(0,a.jsx)("p",{className:"vmd-crumb vmd-mono",children:e}),(0,a.jsx)("h1",{className:"vmd-h1 vmd-h1--page",children:i}),t?(0,a.jsx)("p",{className:"vmd-lede",children:t}):null,s]})})}function G({children:e,tone:i,id:t,label:s,labelledBy:r}){return(0,a.jsx)("section",{id:t,"aria-label":r?void 0:s,"aria-labelledby":r,className:`vmd-section vmd-section--tight${i?` vmd-section--${i}`:""}`,children:(0,a.jsx)("div",{className:"vmd-wrap",children:e})})}function K({eyebrow:e,title:i,body:t}){return(0,a.jsxs)("header",{className:"vmd-sec-head vmd-sec-head--wide",children:[e?(0,a.jsx)("p",{className:"vmd-crumb vmd-mono",children:e}):null,i?(0,a.jsx)("h2",{className:"vmd-h2",children:i}):null,t?(0,a.jsx)("p",{className:"vmd-body",children:t}):null]})}function U({block:e,ctx:i,intro:t}){return e.fields.some(e=>"crd_number"===e.name)?(0,a.jsx)(G,{tone:"sage",id:"apply",label:"Apply to receive introductions",children:(0,a.jsxs)("div",{className:"vmd-advisor",children:[(0,a.jsxs)("div",{className:"vmd-advisor-copy",children:[(0,a.jsx)("p",{className:"vmd-crumb vmd-mono",children:e.eyebrow}),(0,a.jsx)("h2",{className:"vmd-h2",children:e.title}),(0,a.jsx)("p",{className:"vmd-body",children:e.body})]}),(0,a.jsx)(A,{variant:"advisor",block:e,siteKey:i.siteKey,siteName:i.siteName,pageSlug:i.page.slug,pageTitle:i.page.title})]})}):(0,a.jsx)(G,{tone:"sage",id:"advisor",label:"Get matched with an advisor",children:(0,a.jsxs)("div",{className:"vmd-advisor",children:[(0,a.jsx)("div",{className:"vmd-advisor-copy",children:t??(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"vmd-crumb vmd-mono",children:e.eyebrow}),(0,a.jsx)("h2",{className:"vmd-h2",children:e.title}),(0,a.jsxs)("ol",{className:"vmd-how",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"vmd-how-n vmd-mono","aria-hidden":!0,children:"1"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"vmd-how-t",children:"Answer a few questions"}),(0,a.jsx)("p",{children:"Four short steps. Ranges are fine for money questions."})]})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"vmd-how-n vmd-mono","aria-hidden":!0,children:"2"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"vmd-how-t",children:"We review and contact you"}),(0,a.jsx)("p",{children:"We read your answers and contact you to confirm what you need."})]})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"vmd-how-n vmd-mono","aria-hidden":!0,children:"3"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"vmd-how-t",children:"We match you"}),(0,a.jsxs)("p",{children:["With a licensed financial advisor who specializes in ",n,"."]})]})]})]})]})}),(0,a.jsx)(A,{block:e,siteKey:i.siteKey,siteName:i.siteName,pageSlug:i.page.slug,pageTitle:i.page.title,presetTopic:i.topic})]})})}function J({ctx:e,posts:t}){return(0,a.jsx)("ol",{className:"vmd-reads vmd-reads--page",children:t.map(t=>{let s=t.href.replace(/^https?:\/\/[^/]+/,""),r=m(s.replace(/^\/blog\//,"")),n=r?p.find(e=>e.id===r.stop):void 0;return(0,a.jsxs)("li",{className:"vmd-read",children:[(0,a.jsx)("p",{className:"vmd-read-meta vmd-mono",children:r?`${n?.name} \xb7 ${r.pillar} \xb7 ${r.read} min`:"Article"}),(0,a.jsx)(i.default,{href:v(e.siteBasePath,s),className:"vmd-read-t",children:t.title}),(0,a.jsx)("p",{className:"vmd-read-ex",children:t.excerpt})]},t.href)})})}function X({block:e,ctx:t}){switch(e.type){case"hero":return(0,a.jsx)(G,{children:(0,a.jsx)(K,{eyebrow:e.eyebrow,title:e.title,body:e.body})});case"story":return(0,a.jsxs)(G,{children:[(0,a.jsx)(K,{eyebrow:e.eyebrow,title:e.title,body:e.body}),e.highlights?.length?(0,a.jsx)("ul",{className:"vmd-ticks",children:e.highlights.map(e=>(0,a.jsx)("li",{children:e},e))}):null]});case"services":return(0,a.jsxs)(G,{children:[(0,a.jsx)(K,{eyebrow:e.eyebrow,title:e.title,body:e.body}),(0,a.jsx)("ul",{className:"vmd-ruled",children:e.items.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"vmd-h4",children:e.title}),(0,a.jsx)("p",{children:e.description})]},e.title))})]});case"split-panel":return(0,a.jsxs)(G,{children:[(0,a.jsx)(K,{eyebrow:e.eyebrow,title:e.title,body:e.body}),(0,a.jsx)("ul",{className:"vmd-ruled vmd-ruled--two",children:e.panels.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"vmd-h4",children:e.heading}),(0,a.jsx)("p",{children:e.body})]},e.heading))})]});case"team":return(0,a.jsxs)(G,{children:[(0,a.jsx)(K,{eyebrow:e.eyebrow,title:e.title}),(0,a.jsx)("ul",{className:"vmd-ruled",children:e.people.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"vmd-h4",children:e.name}),(0,a.jsx)("p",{className:"vmd-read-meta vmd-mono",children:e.role}),(0,a.jsx)("p",{children:e.bio})]},e.name))})]});case"faq":return(0,a.jsxs)(G,{tone:"mist",children:[(0,a.jsx)(K,{eyebrow:e.eyebrow,title:e.title}),(0,a.jsx)("div",{className:"vmd-faq",children:e.items.map(e=>(0,a.jsxs)("details",{className:"vmd-faq-item",children:[(0,a.jsx)("summary",{children:e.question}),(0,a.jsx)("p",{children:e.answer})]},e.question))})]});case"cta-band":let s;return(0,a.jsx)(G,{children:(0,a.jsxs)("div",{className:"vmd-close",children:[(0,a.jsx)("div",{children:(0,a.jsx)(K,{eyebrow:e.eyebrow,title:e.title,body:e.body})}),(0,a.jsx)(i.default,{href:/^https?:|^#/.test(e.primaryCta.href)?e.primaryCta.href:(s=e.primaryCta.href,v(t.siteBasePath,s)),className:"vmd-btn vmd-btn--coral",children:e.primaryCta.label})]})});case"blog-feed":return(0,a.jsxs)(G,{children:[(0,a.jsx)(K,{eyebrow:e.eyebrow,title:e.title,body:e.body}),(0,a.jsx)(J,{ctx:t,posts:e.posts})]});case"html-content":return(0,a.jsx)(G,{children:(0,a.jsx)("div",{className:"vmd-prose",dangerouslySetInnerHTML:{__html:e.html}})});case"lead-form":return(0,a.jsx)(U,{block:e,ctx:t});case"finance-calculator":return null;default:if(!e.title&&!e.body)return null;return(0,a.jsx)(G,{children:(0,a.jsx)(K,{eyebrow:e.eyebrow,title:e.title,body:e.body})})}}function Z({ctx:e}){let{page:t}=e,s=t.blocks.find(e=>"hero"===e.type),r=t.blocks.find(e=>"html-content"===e.type),o=t.blocks.find(e=>"faq"===e.type),l=t.blocks.find(e=>"lead-form"===e.type),c=0,d=[],g=r.html.replace(/<h2>([\s\S]*?)<\/h2>/g,(e,a)=>{c+=1;let i=`sec-${c}`;return d.push({id:i,text:a.replace(/<[^>]+>/g,"").trim()}),`<h2 id="${i}">${a}</h2>`}
21370),u=Math.max(1,Math.round(r.html.replace(/<[^>]+>/g," ").split(/\s+/).filter(Boolean).length/230)),b=t.slug.replace(/^\/blog\//,""),f=m(b),x=f?p.find(e=>e.id===f.stop):void 0,y=f?.topic??"A full portfolio and wealth review",w=x?p.indexOf(x):-1,_=h.filter(e=>e.slug!==b).sort((e,a)=>Number(a.stop===f?.stop)-Number(e.stop===f?.stop)||Number(a.pillar===f?.pillar)-Number(e.pillar===f?.pillar)).slice(0,3);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("header",{className:"vmd-pagehead vmd-pagehead--article",children:(0,a.jsxs)("div",{className:"vmd-wrap",children:[(0,a.jsxs)("p",{className:"vmd-crumb vmd-mono",children:[(0,a.jsx)(i.default,{href:v(e.siteBasePath,"/blog"),className:"vmd-crumb-link",children:"Articles"})," ","· ",s?.eyebrow??f?.pillar,x?` \xb7 ${x.name}`:""]}),(0,a.jsx)("h1",{className:"vmd-h1 vmd-h1--article",children:t.title}),s?.body?(0,a.jsx)("p",{className:"vmd-lede",children:s.body}):null,w>=0?(0,a.jsx)("div",{className:"vmd-stagebar","aria-label":`Career stage: ${x?.name}, stop ${w+1} of ${p.length}`,role:"img",children:p.map((e,i)=>(0,a.jsx)("span",{className:i===w?"is-here":"",children:(0,a.jsx)("span",{className:"vmd-stagebar-l",children:e.name})},e.id))}):null,(0,a.jsxs)("p",{className:"vmd-meta vmd-mono",children:[u," min read · General education, not advice"]})]})}),(0,a.jsx)("section",{className:"vmd-section vmd-section--tight","aria-label":"Article",children:(0,a.jsxs)("div",{className:"vmd-wrap vmd-article",children:[(0,a.jsxs)("nav",{className:"vmd-toc","aria-label":"In this article",children:[(0,a.jsx)("p",{className:"vmd-toc-h vmd-mono",children:"Sections"}),(0,a.jsx)("ol",{children:d.map(e=>(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:`#${e.id}`,children:e.text})},e.id))})]}),(0,a.jsxs)("div",{className:"vmd-article-body",children:[(0,a.jsx)("div",{className:"vmd-prose",dangerouslySetInnerHTML:{__html:g}}),(0,a.jsxs)("div",{className:"vmd-ask",children:[(0,a.jsxs)("p",{children:[(0,a.jsx)("strong",{children:"Want this applied to your own numbers?"})," We contact you to confirm what you need, then match you with a licensed financial advisor who specializes in ",n,"."]}),(0,a.jsx)("button",{type:"button",className:"vmd-btn vmd-btn--coral",onClick:()=>e.ask(y),children:"Get matched with an advisor"})]})]}),(0,a.jsxs)("div",{className:"vmd-article-aside",children:[(0,a.jsx)("p",{className:"vmd-toc-h vmd-mono",children:"Run the numbers"}),(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e.siteBasePath,"/tools#plotter"),className:"vmd-link",children:"The cost of a late start"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e.siteBasePath,"/tools#contract"),className:"vmd-link",children:"Two offers by wRVU"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e.siteBasePath,"/tools#tail"),className:"vmd-link",children:"Tail coverage reserve"})})]})]})]})}),o?(0,a.jsx)(X,{block:o,ctx:e}):null,(0,a.jsxs)(G,{labelledBy:"vmd-next-h",children:[(0,a.jsx)("h2",{id:"vmd-next-h",className:"vmd-h3",children:"Read next"}),(0,a.jsx)("ul",{className:"vmd-next",children:_.map(t=>{let s;return(0,a.jsxs)("li",{children:[(0,a.jsxs)("p",{className:"vmd-read-meta vmd-mono",children:[p.find(e=>e.id===t.stop)?.name," · ",t.read," min"]}),(0,a.jsx)(i.default,{href:(s=`/blog/${t.slug}`,v(e.siteBasePath,s)),className:"vmd-read-t",children:t.title})]},t.slug)})})]}),l?(0,a.jsx)(U,{block:l,ctx:e}):null]})}function Q({ctx:e}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("nav",{className:"vmd-wrap vmd-jump","aria-label":"Tools on this page",children:[(0,a.jsx)("a",{href:"#plotter",children:"The cost of a late start"}),(0,a.jsx)("a",{href:"#contract",children:"Two offers by wRVU"}),(0,a.jsx)("a",{href:"#tail",children:"Tail coverage reserve"})]}),(0,a.jsx)("section",{id:"plotter",className:"vmd-section vmd-section--tight","aria-labelledby":"t1",children:(0,a.jsxs)("div",{className:"vmd-wrap",children:[(0,a.jsxs)("header",{className:"vmd-sec-head vmd-sec-head--wide",children:[(0,a.jsx)("p",{className:"vmd-crumb vmd-mono",children:"Tool 1 of 3 · Illustration"}),(0,a.jsx)("h2",{id:"t1",className:"vmd-h2",children:"The cost of a late start"}),(0,a.jsx)("p",{className:"vmd-body",children:"What the same monthly amount becomes by 65 from three starting ages, and what a training loan does while you train."})]}),(0,a.jsx)(H,{idPrefix:"tools"}),(0,a.jsxs)("div",{className:"vmd-ask",children:[(0,a.jsxs)("p",{children:[(0,a.jsx)("strong",{children:"Want a catch-up plan?"})," An advisor who specializes in ",n," can fit one around your loans and contract."]}),(0,a.jsx)("button",{type:"button",className:"vmd-btn vmd-btn--coral",onClick:()=>e.ask(c),children:"Ask about catching up"})]})]})}),(0,a.jsx)("section",{id:"contract",className:"vmd-section vmd-section--tight vmd-section--mist","aria-labelledby":"t2",children:(0,a.jsxs)("div",{className:"vmd-wrap",children:[(0,a.jsxs)("header",{className:"vmd-sec-head vmd-sec-head--wide",children:[(0,a.jsx)("p",{className:"vmd-crumb vmd-mono",children:"Tool 2 of 3 · Illustration"}),(0,a.jsx)("h2",{id:"t2",className:"vmd-h2",children:"Two offers by wRVU"}),(0,a.jsxs)("p",{className:"vmd-body",children:["A higher bonus rate is worth nothing below the threshold. Enter both offers and the wRVUs you expect, and see which one pays more."," ",(0,a.jsx)(i.default,{href:v(e.siteBasePath,"/blog/attending-contract-negotiation-financial-basics"),className:"vmd-link",children:"Read the contract article"})]})]}),(0,a.jsx)(W,{}),(0,a.jsxs)("div",{className:"vmd-ask",children:[(0,a.jsxs)("p",{children:[(0,a.jsx)("strong",{children:"Weighing an offer?"})," Talk to an advisor who works with new attendings before you sign."]}),(0,a.jsx)("button",{type:"button",className:"vmd-btn vmd-btn--coral",onClick:()=>e.ask(o),children:"Ask about a contract"})]})]})}),(0,a.jsx)("section",{id:"tail",className:"vmd-section vmd-section--tight","aria-labelledby":"t3",children:(0,a.jsxs)("div",{className:"vmd-wrap",children:[(0,a.jsxs)("header",{className:"vmd-sec-head vmd-sec-head--wide",children:[(0,a.jsx)("p",{className:"vmd-crumb vmd-mono",children:"Tool 3 of 3 · Illustration"}),(0,a.jsx)("h2",{id:"t3",className:"vmd-h2",children:"Tail coverage reserve"}),(0,a.jsxs)("p",{className:"vmd-body",children:["If a job change is possible, how much would you set aside each month to have a tail coverage bill covered by then?"," ",(0,a.jsx)(i.default,{href:v(e.siteBasePath,"/blog/malpractice-tail-coverage-cost-planning"),className:"vmd-link",children:"Read the tail coverage article"})]})]}),(0,a.jsx)(O,{}),(0,a.jsxs)("div",{className:"vmd-ask",children:[(0,a.jsxs)("p",{children:[(0,a.jsx)("strong",{children:"Planning an exit?"})," An advisor can look at tail, disability cover and savings together."]}),(0,a.jsx)("button",{type:"button",className:"vmd-btn vmd-btn--coral",onClick:()=>e.ask(d),children:"Ask about tail and insurance"})]})]})})]})}e.s([],870281),e.i(870281),e.s(["ContentPage",0,function({page:e,siteBasePath:s="",siteKey:r,siteName:o,after:l}){let c,[d,h]=(0,t.useState)(""),m={siteBasePath:s,siteKey:r,siteName:o,page:e,topic:d,ask:e=>{h(e),u()}},p=e.blocks;if(e.slug.startsWith("/blog/")&&p.some(e=>"html-content"===e.type))c=(0,a.jsx)(Z,{ctx:m});else{let t,r=p.find(e=>"hero"===e.type),o=r||p[0]?.type!=="story"?void 0:p[0],l=p.filter(e=>e!==r&&e!==o),d=e.slug;("/services"===d||"/tools"===d)&&(l=l.filter(e=>"services"!==e.type&&"finance-calculator"!==e.type));let h="/contact"===d,g=h?l.find(e=>"story"===e.type):void 0,u=h?l.find(e=>"lead-form"===e.type):void 0;h&&g&&u&&(l=l.filter(e=>e!==g&&e!==u));let b=r&&"primaryCta"in r&&r.primaryCta?r.primaryCta:void 0,f="/services"===d?(0,a.jsx)(V,{crumb:"Career stages",title:"Money questions, stop by stop",lede:`Six stops on a medical career, from the first loan to the last shift. Each one lists what tends to matter there, the articles written for it and a way to ask an advisor who specializes in ${n}.`}):r?(0,a.jsx)(V,{crumb:r.eyebrow??e.title,title:r.title??e.title,lede:r.body??e.summary,children:b?(0,a.jsxs)("p",{className:"vmd-hero-actions",children:[(0,a.jsx)(i.default,{href:(t=b.href,v(m.siteBasePath,t)),className:"vmd-btn vmd-btn--line",children:b.label}),(0,a.jsx)("a",{href:"#apply",className:"vmd-link vmd-link--quiet",children:"Apply below"})]}):null}):o?(0,a.jsx)(V,{crumb:o.eyebrow??e.title,title:o.title,lede:o.body,children:o.highlights?.length?(0,a.jsx)("ul",{className:"vmd-ticks vmd-ticks--head",children:o.highlights.map(e=>(0,a.jsx)("li",{children:e},e))}):null}):(0,a.jsx)(V,{crumb:e.title,title:e.title,lede:e.summary});c=(0,a.jsxs)(a.Fragment,{children:[f,"/services"===d?(0,a.jsx)("section",{className:"vmd-section vmd-section--tight","aria-label":"Career stages",children:(0,a.jsx)("div",{className:"vmd-wrap vmd-narrow",children:(0,a.jsx)(E,{siteBasePath:s,onAsk:m.ask,onHome:!1,openAll:!0,headingLevel:2})})}):null,"/tools"===d?(0,a.jsx)(Q,{ctx:m}):null,h&&g&&u?(0,a.jsx)(U,{block:u,ctx:m,intro:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"vmd-crumb vmd-mono",children:g.eyebrow}),(0,a.jsx)("h2",{className:"vmd-h2",children:g.title}),(0,a.jsx)("p",{className:"vmd-body",children:g.body}),(0,a.jsx)("ol",{className:"vmd-how",children:g.highlights.map((e,i)=>(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"vmd-how-n vmd-mono","aria-hidden":!0,
21370children:i+1}),(0,a.jsx)("div",{children:(0,a.jsx)("p",{children:e})})]},e))})]})}):null,l.map((e,i)=>(0,a.jsx)(X,{block:e,ctx:m},`${e.type}-${i}`))]})}return(0,a.jsxs)(x,{children:[(0,a.jsx)(w,{siteBasePath:s,currentSlug:e.slug}),(0,a.jsxs)("main",{id:"main-content",tabIndex:-1,className:"vmd-main",children:[c,l?(0,a.jsx)("div",{className:"vmd-wrap vmd-after",children:l}):null]}),(0,a.jsx)(k,{siteBasePath:s}),(0,a.jsx)(_,{siteBasePath:s,currentSlug:e.slug})]})},"HomePage",0,function({siteBasePath:e="",advisorBlock:s}){let[o,l]=(0,t.useState)(""),d=e=>{l(e),u()};return(0,a.jsxs)(x,{children:[(0,a.jsx)(w,{siteBasePath:e,currentSlug:"/"}),(0,a.jsxs)("main",{id:"main-content",tabIndex:-1,className:"vmd-main",children:[(0,a.jsx)("section",{className:"vmd-hero","aria-labelledby":"vmd-h1",children:(0,a.jsxs)("div",{className:"vmd-wrap vmd-hero-grid",children:[(0,a.jsxs)("div",{className:"vmd-hero-copy",children:[(0,a.jsx)("p",{className:"vmd-crumb vmd-mono",children:"Chart · Money through a medical career"}),(0,a.jsx)("h1",{id:"vmd-h1",className:"vmd-h1",children:"Medicine pays late. Plan for the years in between."}),(0,a.jsxs)("p",{className:"vmd-lede",children:["Loans start in medical school, real pay starts after training, and most saving starts later still. Find where you are on the timeline, read what tends to matter at that stage, and ask to be matched with a licensed financial advisor who specializes in ",n," when you want one."]}),(0,a.jsxs)("p",{className:"vmd-hero-actions",children:[(0,a.jsx)(i.default,{href:"#advisor",className:"vmd-btn vmd-btn--coral",children:"Find an advisor"}),(0,a.jsx)(i.default,{href:"#timeline",className:"vmd-link vmd-link--quiet",children:"Start at your stage on the timeline"})]})]}),(0,a.jsxs)("div",{className:"vmd-vitals",role:"group","aria-labelledby":"vmd-vitals-h",children:[(0,a.jsxs)("div",{className:"vmd-vitals-head",children:[(0,a.jsx)("h2",{id:"vmd-vitals-h",className:"vmd-vitals-h",children:"Readout: the late start"}),(0,a.jsxs)("p",{className:"vmd-vitals-sub vmd-mono",children:["Illustration · ",T(1500),"/mo · ",6,"% a year · to ",65]})]}),(0,a.jsxs)("dl",{className:"vmd-vitals-list",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Start investing at 25"}),(0,a.jsx)("dd",{className:"vmd-mono",children:T(Y(25))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Start at 35"}),(0,a.jsx)("dd",{className:"vmd-mono",children:T(Y(35))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Start at 40"}),(0,a.jsx)("dd",{className:"vmd-mono",children:T(Y(40))})]}),(0,a.jsxs)("div",{className:"is-alert",children:[(0,a.jsx)("dt",{children:"Ten years of training, priced"}),(0,a.jsx)("dd",{className:"vmd-mono",children:T(Y(25)-Y(35))})]})]}),(0,a.jsxs)("p",{className:"vmd-vitals-foot",children:["Same monthly amount, different start. Not a forecast."," ",(0,a.jsx)(i.default,{href:"#plotter",className:"vmd-link",children:"Change the assumptions"})]})]})]})}),(0,a.jsx)("section",{id:"timeline",className:"vmd-section","aria-labelledby":"vmd-tl-h",children:(0,a.jsxs)("div",{className:"vmd-wrap vmd-split",children:[(0,a.jsxs)("header",{className:"vmd-sec-head vmd-sticky-head",children:[(0,a.jsxs)("p",{className:"vmd-crumb vmd-mono",children:["Timeline · ",p.length," stops"]}),(0,a.jsx)("h2",{id:"vmd-tl-h",className:"vmd-h2",children:"Six stops on a medical career"}),(0,a.jsx)("p",{className:"vmd-body",children:"Open a stop for a short note, the articles written for it and a direct line to an advisor who works with physicians at that stage."})]}),(0,a.jsx)(E,{siteBasePath:e,onAsk:d,onHome:!0})]})}),(0,a.jsx)("section",{id:"advisor",className:"vmd-section vmd-section--sage","aria-labelledby":"vmd-adv-h",children:(0,a.jsxs)("div",{className:"vmd-wrap vmd-advisor",children:[(0,a.jsxs)("div",{className:"vmd-advisor-copy",children:[(0,a.jsx)("p",{className:"vmd-crumb vmd-mono",children:"Find an advisor"}),(0,a.jsxs)("h2",{id:"vmd-adv-h",className:"vmd-h2",children:["Get matched with an advisor who works with ",n]}),(0,a.jsx)("h3",{className:"vmd-h4 vmd-how-h",children:"How it works"}),(0,a.jsxs)("ol",{className:"vmd-how",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"vmd-how-n vmd-mono","aria-hidden":!0,
21370children:"1"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"vmd-how-t",children:"Answer a few questions"}),(0,a.jsx)("p",{children:"Four short steps. Ranges are fine for the money questions."})]})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"vmd-how-n vmd-mono","aria-hidden":!0,children:"2"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"vmd-how-t",children:"We review and contact you"}),(0,a.jsx)("p",{children:"A person reads your answers and contacts you to confirm what you need."})]})]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"vmd-how-n vmd-mono","aria-hidden":!0,children:"3"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"vmd-how-t",children:"We match you"}),(0,a.jsxs)("p",{children:["With a licensed financial advisor who specializes in ",n,". You decide what happens next."]})]})]})]})]}),(0,a.jsx)(A,{block:s,siteKey:"medicalfinancialadvisor.com",siteName:r,pageSlug:"/",pageTitle:r,presetTopic:o})]})}),(0,a.jsx)("section",{id:"plotter",className:"vmd-section","aria-labelledby":"vmd-pl-h",children:(0,a.jsxs)("div",{className:"vmd-wrap",children:[(0,a.jsxs)("header",{className:"vmd-sec-head vmd-sec-head--wide",children:[(0,a.jsx)("p",{className:"vmd-crumb vmd-mono",children:"Tool · Illustration"}),(0,a.jsx)("h2",{id:"vmd-pl-h",className:"vmd-h2",children:"The cost of a late start"}),(0,a.jsxs)("p",{className:"vmd-body",children:["Training delays saving and grows the loan at the same time. Set your own numbers: the plotter draws what the same monthly amount becomes by ",65," from three starting ages, and what your loan does while you train."]})]}),(0,a.jsx)(H,{idPrefix:"home"}),(0,a.jsxs)("div",{className:"vmd-ask",children:[(0,a.jsxs)("p",{children:[(0,a.jsx)("strong",{children:"Started late, or about to?"})," An advisor who specializes in ",n," can build a catch-up plan around your loans and your contract."]}),(0,a.jsx)("button",{type:"button",className:"vmd-btn vmd-btn--coral",onClick:()=>d(c),children:"Ask about catching up"})]})]})}),(0,a.jsx)("section",{className:"vmd-section vmd-section--mist","aria-labelledby":"vmd-rd-h",children:(0,a.jsxs)("div",{className:"vmd-wrap vmd-split",children:[(0,a.jsxs)("header",{className:"vmd-sec-head",children:[(0,a.jsxs)("p",{className:"vmd-crumb vmd-mono",children:["Reading list · ",h.length," articles"]}),(0,a.jsx)("h2",{id:"vmd-rd-h",className:"vmd-h2",children:"Articles, each about four minutes"}),(0,a.jsx)("p",{className:"vmd-body",children:"Written for people in medicine, with worked examples. General education, not advice."}),(0,a.jsx)("h3",{className:"vmd-h4 vmd-tools-h",children:"Two more tools"}),(0,a.jsxs)("ul",{className:"vmd-toollist",children:[(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/tools#contract"),className:"vmd-link",children:"Compare two attending offers by wRVU"})}),(0,a.jsx)("li",{children:(0,a.jsx)(i.default,{href:v(e,"/tools#tail"),className:"vmd-link",children:"Plan a reserve for malpractice tail coverage"})})]})]}),(0,a.jsx)("ol",{className:"vmd-reads",children:h.map(t=>(0,a.jsxs)("li",{className:"vmd-read",children:[(0,a.jsxs)("p",{className:"vmd-read-meta vmd-mono",children:[p.find(e=>e.id===t.stop)?.name," · ",t.pillar," · ",t.read," min"]}),(0,a.jsx)(i.default,{href:v(e,`/blog/${t.slug}`),className:"vmd-read-t",children:t.title}),(0,a.jsx)("p",{className:"vmd-read-ex",children:t.excerpt})]},t.slug))})]})}),(0,a.jsx)("section",{className:"vmd-section","aria-labelledby":"vmd-end-h",children:(0,a.jsx)("div",{className:"vmd-wrap",children:(0,a.jsxs)("div",{className:"vmd-close",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{id:"vmd-end-h",className:"vmd-h2",children:"Wherever you are on the timeline, you can ask."}),(0,a.jsxs)("p",{className:"vmd-body",children:["Four short steps. We review your answers, contact you to confirm what you need, then match you with a licensed financial advisor who specializes in ",n,"."]})]}),(0,a.jsx)(i.default,{href:"#advisor",className:"vmd-btn vmd-btn--coral",children:"Find an advisor"})]})})})]}),(0,a.jsx)(k,{siteBasePath:e}),(0,a.jsx)(_,{siteBasePath:e,currentSlug:"/"})]})}],275961)},555751,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645),s=e.i(849481),r=e.i(514827),n=e.i(710965),o=e.i(36831);let l=(e,a)=>(0,o.apexHref)(e.siteBasePath,a),c=(e,a)=>/^https?:|^#/.test(a)?a:l(e,a);function d({eyebrow:e,title:i,lede:t}){return(0,a.jsx)("header",{className:"apx-page-head",children:(0,a.jsxs)("div",{className:"apx-container apx-page-head-inner apx-rise",children:[(0,a.jsx)("p",{className:"apx-eyebrow apx-mono",children:e}),(0,a.jsx)("h1",{className:"apx-h1 apx-h1--page",children:i}),t?(0,a.jsx)("p",{className:"apx-lede",children:t}):null]})})}function h({children:e,tone:i,id:t,label:s}){return(0,a.jsx)("section",{id:t,"aria-label":s,className:`apx-block${i?` apx-section--${i}`:""}`,children:(0,a.jsx)("div",{className:"apx-container",children:e})})}function m({eyebrow:e,title:i,body:t}){return(0,a.jsxs)(a.Fragment,{children:[e?(0,a.jsx)("p",{className:"apx-eyebrow apx-mono",children:e}):null,i?(0,a.jsx)("h2",{className:"apx-h2",children:i}):null,t?(0,a.jsx)("p",{className:"apx-body",children:t}):null]})}function p({block:e,ctx:i}){return e.fields.some(e=>
21370"crd_number"===e.name)?(0,a.jsx)(h,{tone:"stone",id:"lead",label:"Apply to receive introductions",children:(0,a.jsxs)("div",{className:"apx-contact-grid",children:[(0,a.jsx)("div",{children:(0,a.jsx)(m,{eyebrow:e.eyebrow,title:e.title,body:e.body})}),(0,a.jsx)(r.ApexForm,{variant:"advisor",block:e,siteKey:i.siteKey,siteName:i.siteName,pageSlug:i.page.slug,pageTitle:i.page.title})]})}):(0,a.jsx)(h,{tone:"stone",id:"advisor",label:"Get matched with an advisor",children:(0,a.jsxs)("div",{className:"apx-contact-grid",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(m,{eyebrow:e.eyebrow,title:e.title,body:e.body}),(0,a.jsxs)("ol",{className:"apx-flow",children:[(0,a.jsx)("li",{children:"Answer four short steps. Ranges are fine for money questions."}),(0,a.jsx)("li",{children:"We review your answers and contact you to confirm what you need."}),(0,a.jsxs)("li",{children:["We match you with a licensed financial advisor who specializes in ",o.SPECIALTY,". You decide what happens next."]})]})]}),(0,a.jsx)(r.ApexForm,{block:e,siteKey:i.siteKey,siteName:i.siteName,pageSlug:i.page.slug,pageTitle:i.page.title,presetTopic:i.topic})]})})}function g({ctx:e,topic:i,title:t,body:s,cta:r}){return(0,a.jsxs)("div",{className:"apx-ask",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"apx-ask-t",children:t}),(0,a.jsx)("p",{className:"apx-ask-b",children:s})]}),(0,a.jsx)("button",{type:"button",className:"apx-btn apx-btn--solid",onClick:()=>e.ask(i),children:r??"Get matched with an advisor"})]})}function v({block:e,ctx:t}){switch(e.type){case"story":return(0,a.jsxs)(h,{children:[(0,a.jsx)(m,{eyebrow:e.eyebrow,title:e.title,body:e.body}),e.highlights?.length?(0,a.jsx)("ul",{className:"apx-rules",children:e.highlights.map(e=>(0,a.jsx)("li",{children:e},e))}):null]});case"services":return(0,a.jsxs)(h,{children:[(0,a.jsx)(m,{eyebrow:e.eyebrow,title:e.title,body:e.body}),(0,a.jsx)("ul",{className:"apx-ruled",children:e.items.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"apx-h4",children:e.title}),(0,a.jsx)("p",{children:e.description})]},e.title))})]});case"split-panel":return(0,a.jsxs)(h,{children:[(0,a.jsx)(m,{eyebrow:e.eyebrow,title:e.title,body:e.body}),(0,a.jsx)("ul",{className:"apx-ruled apx-ruled--two",children:e.panels.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)("h3",{className:"apx-h4",children:e.heading}),(0,a.jsx)("p",{children:e.body})]},e.heading))})]});case"team":return(0,a.jsxs)(h,{children:[(0,a.jsx)(m,{eyebrow:e.eyebrow,title:e.title}),(0,a.jsx)("ul",{className:"apx-ruled",children:e.people.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsxs)("h3",{className:"apx-h4",children:[e.name," ",(0,a.jsx)("span",{className:"apx-role",children:e.role})]}),(0,a.jsx)("p",{children:e.bio})]},e.name))})]});case"faq":return(0,a.jsxs)(h,{children:[(0,a.jsx)(m,{eyebrow:e.eyebrow,title:e.title}),(0,a.jsx)("div",{className:"apx-faq",children:e.items.map(e=>(0,a.jsxs)("details",{className:"apx-faq-item",children:[(0,a.jsx)("summary",{children:e.question}),(0,a.jsx)("p",{children:e.answer})]},e.question))})]});case"pricing":return(0,a.jsxs)(h,{children:[(0,a.jsx)(m,{eyebrow:e.eyebrow,title:e.title}),(0,a.jsx)("div",{className:"apx-plans",children:e.plans.map(e=>(0,a.jsxs)("div",{className:"apx-plan",children:[(0,a.jsx)("h3",{className:"apx-h4",children:e.name}),(0,a.jsx)("p",{className:"apx-plan-price apx-mono",children:e.price}),(0,a.jsx)("ul",{children:e.details.map(e=>(0,a.jsx)("li",{children:e},e))})]},e.name))})]});case"cta-band":return(0,a.jsx)(h,{children:(0,a.jsxs)("div",{className:"apx-band",children:[(0,a.jsx)("div",{children:(0,a.jsx)(m,{eyebrow:e.eyebrow,title:e.title,body:e.body})}),(0,a.jsxs)("div",{className:"apx-band-cta",children:[(0,a.jsx)(i.default,{href:c(t,e.primaryCta.href),className:"apx-btn apx-btn--solid",children:e.primaryCta.label}),e.secondaryCta?(0,a.jsx)(i.default,{href:c(t,e.secondaryCta.href),className:"apx-btn apx-btn--line",children:e.secondaryCta.label}):null]})]})});case"blog-feed":return(0,a.jsxs)(h,{children:[(0,a.jsx)(m,{eyebrow:e.eyebrow,title:e.title,body:e.body}),(0,a.jsx)("ol",{className:"apx-ledger",children:e.posts.map((e,s)=>{let r=e.href.replace(/^https?:\/\/[^/]+/,""),n=(0,o.briefingBySlug)(r.replace(/^\/blog\//,""));return(0,a.jsxs)("li",{className:"apx-ledger-row",children:[(0,a.jsx)("span",{className:"apx-ledger-no apx-mono","aria-hidden":!0,
21370children:String(s+1).padStart(2,"0")}),(0,a.jsxs)("div",{children:[(0,a.jsx)(i.default,{href:c(t,e.href),className:"apx-brief-title",children:e.title}),(0,a.jsx)("p",{className:"apx-brief-ex",children:e.excerpt})]}),(0,a.jsx)("p",{className:"apx-brief-meta apx-mono",children:n?`${n.pillar} \xb7 ${n.read} min`:""})]},e.href)})})]});case"html-content":return(0,a.jsx)(h,{children:(0,a.jsx)("div",{className:"apx-prose",dangerouslySetInnerHTML:{__html:e.html}})});case"lead-form":return(0,a.jsx)(p,{block:e,ctx:t});default:if(!e.title&&!e.body)return null;return(0,a.jsx)(h,{children:(0,a.jsx)(m,{eyebrow:e.eyebrow,title:e.title,body:e.body})})}}let u={"concentrated-stock-position-risk-management":{title:"Concentration glide path",blurb:"See what a share-price drop costs today and at your target, one trading window at a time.",to:"/tools#concentration"},"deferred-compensation-plan-tradeoffs":{title:"Deferred-compensation haircut",blurb:"Price an unsecured promise from your employer once company risk is counted.",to:"/tools#deferred"},"golden-parachute-severance-tax-planning":{title:"The change-in-control cliff",blurb:"See where the Section 280G excise tax switches on and what it does to what you keep.",to:"/tools#cliff"}};function b({ctx:e}){let{page:t}=e,s=t.blocks.find(e=>"hero"===e.type),r=t.blocks.find(e=>"html-content"===e.type),n=t.blocks.find(e=>"faq"===e.type),c=t.blocks.find(e=>"lead-form"===e.type),d=0,m=[],f=r.html.replace(/<h2>([\s\S]*?)<\/h2>/g,(e,a)=>{d+=1;let i=`s${d}`;return m.push({id:i,text:a.replace(/<[^>]+>/g,"").trim()}),`<h2 id="${i}">${a}</h2>`}),x=Math.max(1,Math.round(r.html.replace(/<[^>]+>/g," ").split(/\s+/).filter(Boolean).length/230)),y=t.slug.replace(/^\/blog\//,""),w=(0,o.briefingBySlug)(y),_=o.TOPIC_BY_SLUG[y]??o.TOPIC.review,k=u[y],j=o.BRIEFINGS.filter(e=>e.slug!==y).sort((e,a)=>Number(a.area===w?.area)-Number(e.area===w?.area)).slice(0,3);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("header",{className:"apx-page-head apx-page-head--article",children:(0,a.jsxs)("div",{className:"apx-container apx-page-head-inner apx-page-head-grid apx-rise",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("p",{className:"apx-eyebrow apx-mono",children:[(0,a.jsx)(i.default,{href:l(e,"/blog"),className:"apx-crumb",children:"Briefings"})," ","/ ",s?.eyebrow??w?.pillar]}),(0,a.jsx)("h1",{className:"apx-h1 apx-h1--article",children:t.title}),s?.body?(0,a.jsx)("p",{className:"apx-lede apx-lede--stand",children:s.body}):null,(0,a.jsxs)("p",{className:"apx-meta apx-mono",children:[x," min read ",(0,a.jsx)("span",{"aria-hidden":!0,children:"·"})," Educational, not advice"]})]}),(0,a.jsxs)("aside",{className:"apx-aside apx-aside--ask","aria-label":"Talk to an advisor",children:[(0,a.jsx)("p",{className:"apx-eyebrow apx-mono",children:"Talk to an advisor"}),(0,a.jsx)("h2",{className:"apx-h4",children:"Want a professional to look at your situation?"}),(0,a.jsxs)("p",{children:["We contact you to confirm what you need, then match you with a licensed financial advisor who specializes in ",o.SPECIALTY,"."]}),(0,a.jsx)("button",{type:"button",className:"apx-btn apx-btn--solid",onClick:()=>e.ask(_),children:"Get matched with an advisor"}),k?(0,a.jsxs)("p",{className:"apx-aside-pair",children:["Or try the model first:"," ",(0,a.jsx)(i.default,{href:l(e,k.to),className:"apx-link apx-link--strong",children:k.title})]}):null]})]})}),(0,a.jsx)("section",{className:"apx-block","aria-label":"Briefing",children:(0,a.jsxs)("div",{className:"apx-container apx-article-grid",children:[(0,a.jsxs)("nav",{className:"apx-toc","aria-label":"In this briefing",children:[(0,a.jsx)("p",{className:"apx-toc-h apx-mono",children:"In this briefing"}),(0,a.jsx)("ol",{children:m.map(e=>(0,a.jsx)("li",{children:(0,a.jsx)("a",{href:`#${e.id}`,children:e.text})},e.id))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"apx-prose",dangerouslySetInnerHTML:{__html:f}}),(0,a.jsx)(g,{ctx:e,topic:_,title:"Reading is the first step. The plan is the second.",body:`A licensed financial advisor who specializes in ${o.SPECIALTY} can apply this to your own numbers. Tell us about your situation and we will match you.`})]})]})}),n?(0,a.jsx)(v,{block:n,ctx:e}):null,(0,a.jsxs)(h,{label:"Continue reading",children:[(0,a.jsx)("p",{className:"apx-eyebrow apx-mono",children:"Continue reading"}),(0,a.jsx)("ul",{className:"apx-related",children:j.map(t=>(0,a.jsxs)("li",{children:[(0,a.jsxs)("p",{className:"apx-brief-meta apx-mono",children:[t.pillar," · ",t.read," min"]}),(0,a.jsx)(i.default,{href:l(e,`/blog/${t.slug}`),className:"apx-brief-title",children:t.title})]},t.slug))})]}),c?(0,a.jsx)(p,{block:c,ctx:e}):null]})}let f={liquidity:"Pairs with the deferred-compensation model.",risk:"Pairs with the concentration and change-in-control models."};function x({ctx:e}){return(0,a.jsx)("section",{className:"apx-block","aria-label":"Areas of coverage",children:(0,a.jsx)("div",{className:"apx-container",children:o.AREAS.map((t,s)=>(0,a.jsxs)("div",{className:"apx-area",children:[(0,a.jsxs)("div",{className:"apx-area-head",children:[(0,a.jsx)("p",{className:"apx-secno apx-mono","aria-hidden":!0,
21370children:String(s+1).padStart(2,"0")}),(0,a.jsx)("h2",{className:"apx-h3",children:t.name}),(0,a.jsx)("p",{className:"apx-area-blurb",children:t.blurb}),f[t.id]?(0,a.jsx)("p",{className:"apx-area-blurb",children:(0,a.jsx)(i.default,{href:l(e,"/tools"),className:"apx-link",children:f[t.id]})}):null,(0,a.jsx)("p",{className:"apx-area-blurb",children:(0,a.jsxs)("button",{type:"button",className:"apx-link apx-link--btn",onClick:()=>e.ask(o.TOPIC_BY_AREA[t.id]),children:["Talk to an advisor about ",t.name.toLowerCase()," →"]})})]}),(0,a.jsx)("ul",{className:"apx-brief-list",children:o.BRIEFINGS.filter(e=>e.area===t.id).map(t=>(0,a.jsxs)("li",{className:"apx-brief",children:[(0,a.jsx)(i.default,{href:l(e,`/blog/${t.slug}`),className:"apx-brief-title",children:t.title}),(0,a.jsx)("p",{className:"apx-brief-ex",children:t.excerpt}),(0,a.jsxs)("p",{className:"apx-brief-meta apx-mono",children:[t.read," min read"]})]},t.slug))})]},t.id))})})}function y({ctx:e}){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("section",{id:"concentration",className:"apx-block","aria-labelledby":"apx-mc",children:(0,a.jsxs)("div",{className:"apx-container",children:[(0,a.jsx)("p",{className:"apx-eyebrow apx-mono",children:"Model 1 of 3"}),(0,a.jsx)("h2",{id:"apx-mc",className:"apx-h2",children:"Concentration glide path"}),(0,a.jsx)("p",{className:"apx-body apx-body--wide",children:"How fast could a position fall toward a target, one trading window at a time, and what would a share-price drop cost at each step?"}),(0,a.jsx)(n.ConcentrationModel,{}),(0,a.jsx)(g,{ctx:e,topic:o.TOPIC.concentrated,title:"Want an advisor to pressure-test these numbers?",body:`We match you with a licensed financial advisor who specializes in ${o.SPECIALTY}.`}),(0,a.jsx)("p",{className:"apx-more",children:(0,a.jsx)(i.default,{href:l(e,"/blog/concentrated-stock-position-risk-management"),className:"apx-link apx-link--strong",children:"Read: Managing Concentrated Stock Position Risk Without Signaling →"})})]})}),(0,a.jsx)("section",{id:"deferred",className:"apx-block apx-section--stone","aria-labelledby":"apx-md",children:(0,a.jsxs)("div",{className:"apx-container",children:[(0,a.jsx)("p",{className:"apx-eyebrow apx-mono",children:"Model 2 of 3"}),(0,a.jsx)("h2",{id:"apx-md",className:"apx-h2",children:"Deferred-compensation haircut"}),(0,a.jsx)("p",{className:"apx-body apx-body--wide",children:"What is an unsecured promise from your employer worth today once the chance the company stumbles is priced in?"}),(0,a.jsx)(n.DeferredModel,{}),(0,a.jsx)(g,{ctx:e,topic:o.TOPIC.deferred,title:"Unsure how much of your deferred balance to rely on?",body:`An advisor who specializes in ${o.SPECIALTY} can look at your plan's terms with you.`}),(0,a.jsx)("p",{className:"apx-more",children:(0,a.jsx)(i.default,{href:l(e,"/blog/deferred-compensation-plan-tradeoffs"),className:"apx-link apx-link--strong",children:"Read: Deferred Compensation Plans: Weighing the Real Tradeoffs →"})})]})}),(0,a.jsx)("section",{id:"cliff",className:"apx-block","aria-labelledby":"apx-mp",children:(0,a.jsxs)("div",{className:"apx-container",children:[(0,a.jsx)("p",{className:"apx-eyebrow apx-mono",children:"Model 3 of 3"}),(0,a.jsx)("h2",{id:"apx-mp",className:"apx-h2",children:"The change-in-control cliff"}),(0,a.jsx)("p",{className:"apx-body apx-body--wide",children:"Where does the Section 280G excise tax switch on, and what does the line do to what you keep on either side of it?"}),(0,a.jsx)(n.ParachuteModel,{}),(0,a.jsx)(g,{ctx:e,topic:o.TOPIC.severance,title:"Negotiating or facing a change in control?",body:`Talk to a licensed financial advisor who specializes in ${o.SPECIALTY} before terms are final.`}),(0,a.jsx)("p",{className:"apx-more",children:(0,a.jsx)(i.default,{href:l(e,"/blog/golden-parachute-severance-tax-planning"),className:"apx-link apx-link--strong",children:"Read: Golden Parachute and Severance Tax Planning for Departing Executives →"})})]})})]})}e.s(["ApexContentPage",0,function({page:e,siteBasePath:i="",siteKey:n,siteName:l,after:c}){let p,[g,u]=(0,t.useState)(""),f={siteBasePath:i,siteKey:n,siteName:l,page:e,topic:g,ask:e=>{u(e),(0,o.scrollToAdvisor)()}},w=e.blocks,_=e.slug.startsWith("/blog/")&&w.some(e=>"html-content"===e.type),k=w.find(e=>"hero"===e.type),j=k?w.filter(e=>e!==k):w,N="/services"===e.slug?j.filter(e=>"services"!==e.type):j;if(_)p=(0,a.jsx)(b,{ctx:f});else{let i="/contact"===e.slug,t=i?N.find(e=>"story"===e.type):void 0,s=i?N.find(e=>"lead-form"===e.type):void 0,o=i&&t&&s?N.filter(e=>e!==t&&e!==s):N;p=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(d,{eyebrow:k?.eyebrow??e.title,title:k?.title??e.title,lede:k?.body??e.summary}),i&&t&&s?(0,a.jsx)(h,{tone:"stone",id:"advisor",label:"Get matched with an advisor",children:(0,a.jsxs)("div",{className:"apx-contact-grid",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(m,{eyebrow:t.eyebrow,title:t.title,body:t.body}),(0,a.jsx)("ul",{className:"apx-rules",children:t.highlights.map(e=>(0,a.jsx)("li",{children:e},e))})]}),(0,a.jsx)(r.ApexForm,{block:s,siteKey:n,siteName:l,pageSlug:e.slug,pageTitle:e.title,presetTopic:g})]})}):null,o.map((e,i)=>(0,a.jsx)(v,{block:e,ctx:f},`${e.type}-${i}`)),"/services"===e.slug?(0,a.jsx)(x,{ctx:f}):null,"/tools"===e.slug?(0,a.jsx)(y,{ctx:f}):null]})}return(0,a.jsxs)(s.ApexShell,{children:[(0,a.jsx)(s.ApexNav,{siteBasePath:i,currentSlug:e.slug}
21370),(0,a.jsxs)("main",{id:"main-content",tabIndex:-1,className:"apx-main",children:[p,c?(0,a.jsx)("div",{className:"apx-container",children:c}):null]}),(0,a.jsx)(s.ApexFooter,{siteBasePath:i}),(0,a.jsx)(s.ApexSticky,{siteBasePath:i,currentSlug:e.slug})]})}])},811701,(e,a,i)=>{a.exports={_note:"Single definition of the advisor marketplace's catalog. Read by lib/advisor-pricing.ts and by scripts/rc_advisor_billing.py and scripts/advisor_billing_walls.py. RevenueCat Web Billing products cannot be created through its API, so every product id and price here is also typed into the RevenueCat dashboard by hand (wall AB1-AB6): change a price here only together with that product.",entitlement:"advisor_member",offerings:{membership:"advisor.membership",leads:"advisor.leads"},membership:{productId:"advisor_membership_monthly",priceUsd:99},leadProductPrefix:"advisor_lead_",leadTiersCents:[499,1999,7900,19900,49900],maxBuyersPerLead:3}},324026,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(271645);let s="advisor-network-6zmyq";var r=e.i(603249);async function n(a){let[{sendPasswordResetEmail:i},t]=await Promise.all([e.A(403975),(0,r.getMemberAuth)(s)]);await i(t,a)}async function o(e,a={}){let i={};void 0!==a.body&&(i["content-type"]="application/json"),a.user&&(i.authorization=`Bearer ${await a.user.getIdToken(!0)}`);let t=await fetch(`/api/advisor/${e}`,{method:a.method??(void 0!==a.body?"POST":"GET"),headers:i,body:void 0!==a.body?JSON.stringify(a.body):void 0}),s=await t.json().catch(()=>({}));return{ok:t.ok,status:t.status,data:s}}function l(e){let a="object"==typeof e&&e&&"code"in e?String(e.code):"";return a.includes("email-already-in-use")?"An account already exists for that email. Sign in instead.":a.includes("invalid-credential")||a.includes("wrong-password")||a.includes("user-not-found")||a.includes("invalid-login")?"That email and password do not match.":a.includes("too-many-requests")?"Too many attempts. Please wait a few minutes and try again.":a.includes("weak-password")?"Choose a longer password.":"Something went wrong. Please try again."}e.i(247167);var c=e.i(811701);let d="rcb_sb_YuDwFDOZMogNOqAbGNFgwBVwQ".trim(),h=d.length>0;async function m(a){let{Purchases:i}=await e.A(323738);if(!i.isConfigured())return i.configure({apiKey:d,appUserId:a});let t=i.getSharedInstance();return t.getAppUserId()!==a&&await t.changeUser(a),t}async function p(e){let a=await (await m(e)).getOfferings(),i=a.all[c.default.offerings.membership]?.availablePackages.find(e=>"$rc_monthly"===e.identifier)??null,t=new Map;for(let e of a.all[c.default.offerings.leads]?.availablePackages??[]){let a=Number(e.identifier.replace(/^lead_/,""));Number.isFinite(a)&&c.default.leadTiersCents.includes(a)&&t.set(a,e)}return{membership:i,leads:t}}async function g(e,a,i){let t=await m(e);try{return await t.purchase({rcPackage:a,customerEmail:i}),!0}catch(e){if("object"==typeof e&&e&&"errorCode"in e&&1===e.errorCode)return!1;throw e}}let v=c.default.leadTiersCents;function u(e){return e%100==0?`$${e/100}`:`$${(e/100).toFixed(2)}`}function b({item:e,busy:i,hasVoucher:t,onBuy:s,onRedeem:r}){let n=e.card,o=[["Needs help with",n.topic],["Main goal",n.goal],["Timeline",n.timeline],["Has an advisor",n.currentAdvisor],["Net worth",n.netWorth],["Income",n.income],["Investable assets",n.assets],["Role",n.role],["Area",n.region]].filter(e=>!!e[1]);return(0,a.jsxs)("li",{className:"advisor-portal-lead",children:[(0,a.jsx)("dl",{className:"advisor-portal-facts",children:o.map(([e,i])=>(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:e}),(0,a.jsx)("dd",{children:i})]},e))}),e.purchased&&e.contact?(0,a.jsxs)("div",{className:"advisor-portal-contact",role:"status",children:[(0,a.jsx)("h4",{children:"Contact details"}),(0,a.jsx)("p",{children:(0,a.jsx)("strong",{children:e.contact.name})}),(0,a.jsxs)("p",{children:[(0,a.jsx)("a",{href:`mailto:${e.contact.email}`,children:e.contact.email})," · ",(0,a.jsx)("a",{href:`tel:${e.contact.phone}`,children:e.contact.phone})]}),e.contact.preferredContact?(0,a.jsxs)("p",{className:"advisor-portal-hint",children:["Prefers: ",e.contact.preferredContact]}):null,e.contact.message?(0,a.jsxs)("p",{className:"advisor-portal-hint",children:["Note: ",e.contact.message]}):null]}):(0,a.jsxs)("div",{className:"advisor-portal-buy",children:[(0,a.jsxs)("p",{className:"advisor-portal-hint",children:[e.buyerCount," of ",e.maxBuyers," advisors have this lead. Contact details appear after you buy it."]}),t?(0,a.jsxs)("button",{className:"advisor-portal-btn",type:"button",onClick:r,disabled:i,children:["Use your paid purchase (",u(e.priceCents),")"]}):(0,a.jsxs)("button",{className:"advisor-portal-btn",type:"button",onClick:s,disabled:i,children:["Buy this lead for ",u
21370(e.priceCents)]})]})]})}function f({user:e,siteName:i,billing:s,onChanged:r}){let[n,l]=(0,t.useState)(null),[c,d]=(0,t.useState)(null),[m,x]=(0,t.useState)(!1),[y,w]=(0,t.useState)(null),_=(0,t.useCallback)(async()=>{let a=await o("leads",{user:e});a.ok?l(a.data):w({kind:"error",text:a.data.message??"We could not load the lead board."})},[e]);async function k(){if(c?.membership){x(!0),w(null);try{if(await g(e.uid,c.membership,e.email??"")){w({kind:"ok",text:"Payment received. Activating your membership…"});for(let a=0;a<6;a++){await new Promise(e=>setTimeout(e,1500));let a=await o("me",{user:e});if(a.ok&&a.data.billing?.membershipActive)break}r()}}catch{w({kind:"error",text:"The payment did not go through. You were not charged. Please try again."})}finally{x(!1)}}}async function j(a){let i=await o("leads/redeem",{body:{leadId:a},user:e});return i.ok?(await _(),!0):(w({kind:"error",text:i.data.message??"We could not unlock that lead."}),!1)}async function N(a){let i=c?.leads.get(a.priceCents);if(!i)return void w({kind:"error",text:"Lead purchases are not open yet."});x(!0),w(null);try{if(await g(e.uid,i,e.email??""))for(let e=0;e<6&&!await j(a.id);e++)await new Promise(e=>setTimeout(e,1500))}catch{w({kind:"error",text:"The payment did not go through. You were not charged. Please try again."})}finally{x(!1)}}(0,t.useEffect)(()=>{h&&s.configured&&(_(),p(e.uid).then(d).catch(()=>d({membership:null,leads:new Map})))},[e,s.configured,s.membershipActive,_]);let S=y?(0,a.jsx)("p",{className:`advisor-portal-notice advisor-portal-notice--${y.kind}`,role:"error"===y.kind?"alert":"status",children:y.text}):null,A=s.sandbox?(0,a.jsx)("p",{className:"advisor-portal-notice",role:"note",children:"Test mode: payments are simulated (no money moves) and only test leads appear."}):null,z=h&&s.configured&&!!(c?.membership||s.membershipActive);return(0,a.jsxs)(a.Fragment,{children:[A,S,(0,a.jsxs)("div",{className:"advisor-portal-card",children:[(0,a.jsx)("h3",{children:"Membership"}),s.membershipActive?(0,a.jsxs)("p",{children:[(0,a.jsx)("strong",{children:"Active."})," $",s.membershipPriceUsd," a month for the ",i," lead board",s.membershipExpiresAt?`; renews or ends around ${new Date(s.membershipExpiresAt).toLocaleDateString()}`:"","."]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("p",{children:[(0,a.jsxs)("strong",{children:["$",s.membershipPriceUsd," a month"]})," gives you the lead board for ",i,". You can cancel any time."]}),z?(0,a.jsx)("button",{className:"advisor-portal-btn",type:"button",onClick:k,disabled:m||!c?.membership,children:m?"Working…":`Start membership ($${s.membershipPriceUsd}/month)`}):(0,a.jsx)("p",{className:"advisor-portal-hint",children:"Billing opens soon; we will email you the day it does. Nothing is charged until then."})]})]}),(0,a.jsxs)("div",{className:"advisor-portal-card",children:[(0,a.jsx)("h3",{children:"Lead board"}),s.membershipActive?n?0===n.items.length?(0,a.jsx)("p",{children:"No leads are listed right now. New ones appear here after they are reviewed."}):(0,a.jsx)("ul",{className:"advisor-portal-leads",children:n.items.map(e=>(0,a.jsx)(b,{item:e,busy:m,hasVoucher:n.vouchers.some(a=>a.priceCents===e.priceCents&&a.count>0),onBuy:()=>void N(e),onRedeem:()=>void j(e.id)},e.id))}):(0,a.jsx)("p",{className:"advisor-portal-hint",children:"Loading leads…"}):(0,a.jsxs)("p",{children:["Start your membership to see the lead board. You then pay ",(0,a.jsxs)("strong",{children:[u(v[0])," to ",u(v[v.length-1])," per lead"]}),", set by the person’s income and net worth, to see their contact details. Personal details are never shown before you buy."]})]})]})}
21370c.default.maxBuyersPerLead,c.default.membership.productId,c.default.membership.priceUsd,c.default.entitlement,c.default.offerings.membership,c.default.offerings.leads;let x="advisor-signup-draft";function y(e){try{window.localStorage.setItem(x,JSON.stringify(e))}catch{}}function w({id:e,label:i,hint:t,...s}){return(0,a.jsxs)("div",{className:"advisor-portal-field",children:[(0,a.jsx)("label",{htmlFor:e,children:i}),(0,a.jsx)("input",{id:e,...s}),t?(0,a.jsx)("p",{className:"advisor-portal-hint",children:t}):null]})}e.s(["AdvisorPortal",0,function({siteKey:e,siteName:c}){let[d,h]=(0,t.useState)(void 0),[m,p]=(0,t.useState)(null),[g,v]=(0,t.useState)("create"),[u,b]=(0,t.useState)(null),[_,k]=(0,t.useState)(!1),[j,N]=(0,t.useState)(0),[S,A]=(0,t.useState)(""),[z,C]=(0,t.useState)(""),[M,P]=(0,t.useState)(""),[T,E]=(0,t.useState)(null),[F,L]=(0,t.useState)(""),[I,$]=(0,t.useState)(!1),[B,q]=(0,t.useState)(null),[R,H]=(0,t.useState)(""),[D,W]=(0,t.useState)("");(0,t.useEffect)(()=>{let e=new URLSearchParams(window.location.search),a=e.get("token");"verifyEmail"===e.get("mode")&&a&&(window.history.replaceState(null,"",window.location.pathname),o("confirm",{body:{token:a}}).then(e=>{e.ok?(v("signin"),b({kind:"ok",text:"Email confirmed. You can finish setting up your account now."}),N(e=>e+1)):b({kind:"error",text:e.data.message??"This link has expired or was already used. Sign in and ask for a new one."})}))},[]),(0,t.useEffect)(()=>{let e,a;return(a=e=>h(e),(0,r.watchMemberAuth)(s,a)).then(a=>{e=a}),()=>e?.()},[]);let O=(0,t.useCallback)(async e=>{let a=await o("me",{user:e});a.ok&&p(a.data)},[]);async function Y(a){a.preventDefault(),k(!0),b(null),E(null);try{let a=await o("verify",{body:{crd:M,fullName:S,email:z,siteKey:e}});a.ok?E(a.data):b({kind:"error",text:a.data.message??"We could not check that. Please try again."})}finally{k(!1)}}async function V(a){if(a.preventDefault(),F.length<10)return void b({kind:"error",text:"Use at least 10 characters for your password."});k(!0),b(null);try{let a,i=await (a=z.trim(),(0,r.memberSignUpWithEmail)(s,a,F));y({fullName:S,crd:M});let t=await o("email",{body:{siteKey:e},user:i});q(z.trim()),t.ok||b({kind:"error",text:"Your account is created, but we could not send the confirmation email. Use “Send it again” below."})}catch(e){b({kind:"error",text:l(e)})}finally{k(!1)}}async function G(){d&&(k(!0),b((await o("email",{body:{siteKey:e},user:d})).ok?{kind:"ok",text:"We sent it again. Check your inbox."}:{kind:"error",text:"We could not send the email. Please try again."}),k(!1))}async function K(e){e.preventDefault(),k(!0),b(null);try{let e;await (e=R.trim(),(0,r.memberSignInWithEmail)(s,e,D)),W("")}catch(e){b({kind:"error",text:l(e)})}finally{k(!1)}}async function U(){if(!R.trim())return void b({kind:"error",text:"Enter your email above first."});k(!0);try{await n(R.trim())}catch{}b({kind:"ok",text:"If an account exists for that email, we sent a link to choose a new password."}),k(!1)}async function J(a){if(a.preventDefault(),!d)return;k(!0),b(null),y({fullName:S,crd:M});let i=await o("claim",{body:{crd:M,fullName:S,siteKey:e},user:d});i.ok?await O(d):b({kind:"error",text:(i.data.messages??[i.data.message??"We could not finish setting up your account."]).join(" ")}),k(!1)}(0,t.useEffect)(()=>{if(d){let e=function(){try{let e=window.localStorage.getItem(x),a=e?JSON.parse(e):{};return{fullName:a.fullName??"",crd:a.crd??""}}catch{return{fullName:"",crd:""}}}();A(a=>a||e.fullName),P(a=>a||e.crd),O(d)}else p(null)},[d,O,j]);let X=u?(0,a.jsx)("p",{className:`advisor-portal-notice advisor-portal-notice--${u.kind}`,role:"error"===u.kind?"alert":"status",children:u.text}):null;if(void 0===d)return(0,a.jsx)("section",{className:"advisor-portal","aria-busy":"true",children:(0,a.jsx)("p",{className:"advisor-portal-hint",children:"Loading…"})});if(d){let e=m?.advisor;return(0,a.jsxs)("section",{className:"advisor-portal","aria-labelledby":"advisor-portal-h",children:[(0,a.jsxs)("div",{className:"advisor-portal-bar",children:[(0,a.jsx)("h2",{id:"advisor-portal-h",children:e?`Welcome, ${e.fullName}`:"Your advisor account"}),(0,a.jsx)("button",{className:"advisor-portal-link",type:"button",onClick:()=>void(0,r.memberSignOut)(s),children:"Sign out"})]}),X,m?null:(0,a.jsx)("p",{className:"advisor-portal-hint",children:"Loading your account…"}),m&&!m.emailVerified?(0,a.jsxs)("div",{className:"advisor-portal-card",children:[(0,a.jsx)("h3",{children:"Confirm your email"}),(0,a.jsxs)("p",{children:["We sent a link to ",(0,a.jsx)("strong",{children:m.email}),". Open it to confirm your email, then come back here and sign in again."]}),(0,a.jsx)("button",{className:"advisor-portal-btn advisor-portal-btn--quiet",type:"button",onClick:G,disabled:_,children:"Send it again"})]}):null,m&&m.emailVerified&&!e?(0,a.jsxs)("form",{className:"advisor-portal-card advisor-portal-form",onSubmit:J,children:[(0,a.jsx)("h3",{children:"Verify your registration"}),(0,a.jsx)("p",{children:"We check your CRD number against the public registration record, live, before your account can be used."}),(0,a.jsx)(w,{id:"ap-fn",label:"Full name, as on your registration",value:S,onChange:e=>A(e.target.value),autoComplete:"name",required:!0}),(0,a.jsx)(w,{id:"ap-crd",label:"Your individual CRD number",inputMode:"numeric",value:M,onChange:e=>P(e.target.value),required:!0}),(0,a.jsx)("button",{className:"advisor-portal-btn",type:"submit",disabled:_,children:_?"Checking…":"Verify and finish"}),(0,a.jsxs)("p",{className:"advisor-portal-hint",children:["Not registered as an investment adviser representative, or the check fails? ",(0,a.jsx)(i.default,{href:"/advisors#lead",children:"Apply for a manual review"}),"."]})]}):null,e&&"review"===e.status?(0,a.jsxs)("div",{className:"advisor-portal-card",children:[(0,a.jsx)("h3",{children:"Your account is under review"}),(0,a.jsx)("p",{children:"Your CRD checks out. We review some accounts by hand before they can see anything. We will email you when yours is a
21370pproved."})]}):null,e&&"rejected"===e.status?(0,a.jsxs)("div",{className:"advisor-portal-card",children:[(0,a.jsx)("h3",{children:"We could not approve this account"}),(0,a.jsx)("p",{children:"Please contact us if you think this is a mistake."})]}):null,e&&"active"===e.status?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"advisor-portal-card",children:[(0,a.jsx)("h3",{children:"Verified registration"}),(0,a.jsxs)("dl",{className:"advisor-portal-facts",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"CRD number"}),(0,a.jsx)("dd",{children:e.crd})]}),e.firm?(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Firm"}),(0,a.jsx)("dd",{children:e.firm})]}):null,e.states.length?(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:"Registered in"}),(0,a.jsx)("dd",{children:e.states.join(", ")})]}):null]})]}),m.billing?(0,a.jsx)(f,{user:d,siteName:c,billing:m.billing,onChanged:()=>N(e=>e+1)}):null]}):null]})}return(0,a.jsxs)("section",{className:"advisor-portal","aria-labelledby":"advisor-portal-h",children:[(0,a.jsx)("h2",{id:"advisor-portal-h",children:"Advisor account"}),(0,a.jsxs)("div",{className:"advisor-portal-tabs",role:"tablist","aria-label":"Advisor account",children:[(0,a.jsx)("button",{role:"tab",type:"button","aria-selected":"create"===g,onClick:()=>{v("create"),b(null)},children:"Create account"}),(0,a.jsx)("button",{role:"tab",type:"button","aria-selected":"signin"===g,onClick:()=>{v("signin"),b(null)},children:"Sign in"})]}),X,"signin"===g?(0,a.jsxs)("form",{onSubmit:K,className:"advisor-portal-form",children:[(0,a.jsx)(w,{id:"ap-si-email",label:"Email",type:"email",autoComplete:"email",value:R,onChange:e=>H(e.target.value),required:!0}),(0,a.jsx)(w,{id:"ap-si-pw",label:"Password",type:"password",autoComplete:"current-password",value:D,onChange:e=>W(e.target.value),required:!0}),(0,a.jsx)("button",{className:"advisor-portal-btn",type:"submit",disabled:_,children:"Sign in"}),(0,a.jsx)("button",{className:"advisor-portal-link",type:"button",onClick:U,disabled:_,children:"Forgot your password?"})]}):B?(0,a.jsxs)("div",{className:"advisor-portal-card",role:"status",children:[(0,a.jsx)("h3",{children:"Check your email"}),(0,a.jsxs)("p",{children:["We sent a confirmation link to ",(0,a.jsx)("strong",{children:B}),". Open it, then sign in here to finish. Your account works once the link is confirmed."]})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"advisor-portal-lede",children:"Create your account by verifying your CRD number. We check it live against the public registration record, so it takes a minute and only registered advisors get in."}),(0,a.jsxs)("form",{onSubmit:Y,className:"advisor-portal-form",children:[(0,a.jsx)(w,{id:"ap-name",label:"Full name, as on your registration",value:S,onChange:e=>{A(e.target.value),E(null)},autoComplete:"name",required:!0}),(0,a.jsx)(w,{id:"ap-email",label:"Work email",type:"email",value:z,onChange:e=>{C(e.target.value),E(null)},autoComplete:"email",hint:"Use your firm email. Personal addresses are reviewed by hand.",required:!0}),(0,a.jsx)(w,{id:"ap-crd",label:"Your individual CRD number",inputMode:"numeric",value:M,onChange:e=>{P(e.target.value),E(null)},hint:"Find it at adviserinfo.sec.gov, or on your Form U4.",required:!0}),(0,a.jsx)("button",{className:"advisor-portal-btn",type:"submit",disabled:_,children:_?"Checking the record…":"Check my CRD"})]}),T?(0,a.jsxs)("div",{className:`advisor-portal-card advisor-portal-card--${T.verdict}`,role:"status",children:[T.match?(0,a.jsxs)("p",{children:[(0,a.jsx)("strong",{children:"We found you:"})," ",T.match.name,T.match.firm?`, ${T.match.firm}`:"",T.match.states.length?`. Registered in ${T.match.states.join(", ")}.`:"."]}):null,(0,a.jsx)("p",{children:T.messages.join(" ")}),"rejected"===T.verdict?(0,a.jsx)("p",{children:(0,a.jsx)(i.default,{href:"/advisors#lead",children:"Apply for a manual review"})}):null,"verified"===T.verdict||"review"===T.verdict?(0,a.jsxs)("form",{onSubmit:V,className:"advisor-portal-form",children:[(0,a.jsx)(w,{id:"ap-pw",label:"Choose a password",type:"password",autoComplete:"new-password",value:F,onChange:e=>L(e.target.value),hint:"At least 10 characters.",required:!0}),(0,a.jsxs)("label",{className:"advisor-portal-check",children:[(0,a.jsx)("input",{type:"checkbox",checked:I,onChange:e=>$(e.target.checked),required:!0}),(0,a.jsx)("span",{children:"I am the person named above and I hold this CRD number."})]}),(0,a.jsx)("button",{className:"advisor-portal-btn",type:"submit",disabled:_||!I,children:_?"Creating…":"Create my account"})]}):null]}):null]})]})}],324026)},488143,(e,a,i)=>{"use strict";function t({widthInt:e,heightInt:a,blurWidth:i,blurHeight:s,blurDataURL:r,objectFit:n}
21370){let o=i?40*i:e,l=s?40*s:a,c=o&&l?`viewBox='0 0 ${o} ${l}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${c}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${c?"none":"contain"===n?"xMidYMid":"cover"===n?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${r}'/%3E%3C/svg%3E`}Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"getImageBlurSvg",{enumerable:!0,get:function(){return t}})},987690,(e,a,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var t={VALID_LOADERS:function(){return r},imageConfigDefault:function(){return n}};for(var s in t)Object.defineProperty(i,s,{enumerable:!0,get:t[s]});let r=["default","imgix","cloudinary","akamai","custom"],n={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},908927,(e,a,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"getImgProps",{enumerable:!0,get:function(){return c}}),e.r(233525);let t=e.r(543369),s=e.r(488143),r=e.r(987690),n=["-moz-initial","fill","none","scale-down",void 0];function o(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function c({src:e,sizes:a,unoptimized:i=!1,priority:d=!1,preload:h=!1,loading:m,className:p,quality:g,width:v,height:u,fill:b=!1,style:f,overrideSrc:x,onLoad:y,onLoadingComplete:w,placeholder:_="empty",blurDataURL:k,fetchPriority:j,decoding:N="async",layout:S,objectFit:A,objectPosition:z,lazyBoundary:C,lazyRoot:M,...P},T){var E;let F,L,I,{imgConf:$,showAltText:B,blurComplete:q,defaultLoader:R}=T,H=$||r.imageConfigDefault;if("allSizes"in H)F=H;else{let e=[...H.deviceSizes,...H.imageSizes].sort((e,a)=>e-a),a=H.deviceSizes.sort((e,a)=>e-a),i=H.qualities?.sort((e,a)=>e-a);F={...H,allSizes:e,deviceSizes:a,qualities:i}}if(void 0===R)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let D=P.loader||R;delete P.loader,delete P.srcSet;let W="__next_img_default"in D;if(W){if("custom"===F.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
21371Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=D;D=a=>{let{config:i,...t}=a;return e(t)}}if(S){"fill"===S&&(b=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[S];e&&(f={...f,...e});let i={responsive:"100vw",fill:"100vw"}[S];i&&!a&&(a=i)}let O="",Y=l(v),V=l(u);if((E=e)&&"object"==typeof E&&(o(E)||void 0!==E.src)){let a=o(e)?e.default:e;if(!a.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(a)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!a.height||!a.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(a)}
21371`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(L=a.blurWidth,I=a.blurHeight,k=k||a.blurDataURL,O=a.src,!b)if(Y||V){if(Y&&!V){let e=Y/a.width;V=Math.round(a.height*e)}else if(!Y&&V){let e=V/a.height;Y=Math.round(a.width*e)}}else Y=a.width,V=a.height}let G=!d&&!h&&("lazy"===m||void 0===m);(!(e="string"==typeof e?e:O)||e.startsWith("data:")||e.startsWith("blob:"))&&(i=!0,G=!1),F.unoptimized&&(i=!0),W&&!F.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(i=!0);let K=l(g),U=Object.assign(b?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:A,objectPosition:z}:{},B?{}:{color:"transparent"},f),J=q||"empty"===_?null:"blur"===_?`url("data:image/svg+xml;charset=utf-8,${(0,s.getImageBlurSvg)({widthInt:Y,heightInt:V,blurWidth:L,blurHeight:I,blurDataURL:k||"",objectFit:U.objectFit})}")`:`url("${_}")`,X=n.includes(U.objectFit)?"fill"===U.objectFit?"100% 100%":"cover":U.objectFit,Z=J?{backgroundSize:X,backgroundPosition:U.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:J}:{},Q=function({config:e,src:a,unoptimized:i,width:s,quality:r,sizes:n,loader:o}){if(i){if(a.startsWith("/")&&!a.startsWith("//")){let e=(0,t.getDeploymentId)();if(e){let i=a.indexOf("?");if(-1!==i){let t=new URLSearchParams(a.slice(i+1));t.get("dpl")||(t.append("dpl",e),a=a.slice(0,i)+"?"+t.toString())}else a+=`?dpl=${e}`}}return{src:a,srcSet:void 0,sizes:void 0}}let{widths:l,kind:c}=function({deviceSizes:e,allSizes:a},i,t){if(t){let i=/(^|\s)(1?\d?\d)vw/g,s=[];for(let e;e=i.exec(t);)s.push(parseInt(e[2]));if(s.length){let i=.01*Math.min(...s);return{widths:a.filter(a=>a>=e[0]*i),kind:"w"}}return{widths:a,kind:"w"}}return"number"!=typeof i?{widths:e,kind:"w"}:{widths:[...new Set([i,2*i].map(e=>a.find(a=>a>=e)||a[a.length-1]))],kind:"x"}}(e,s,n),d=l.length-1;return{sizes:n||"w"!==c?n:"100vw",srcSet:l.map((i,t)=>`${o({config:e,src:a,quality:r,width:i})} ${"w"===c?i:t+1}${c}`).join(", "),src:o({config:e,src:a,quality:r,width:l[d]})}}({config:F,src:e,unoptimized:i,width:Y,quality:K,sizes:a,loader:D}),ee=G?"lazy":m;return{props:{...P,loading:ee,fetchPriority:j,width:Y,height:V,decoding:N,className:p,style:{...U,...Z},sizes:Q.sizes,srcSet:Q.srcSet,src:x||Q.src},meta:{unoptimized:i,preload:h||d,placeholder:_,fill:b}}}},898879,(e,a,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"default",{enumerable:!0,get:function(){return o}});let t=e.r(271645),s="u"<typeof window,r=s?()=>{}:t.useLayoutEffect,n=s?()=>{}:t.useEffect;function o(e){let{headManager:a,reduceComponentsToState:i}=e;function o(){if(a&&a.mountedInstances){let e=t.Children.toArray(Array.from(a.mountedInstances).filter(Boolean));a.updateHead(i(e))}}return s&&(a?.mountedInstances?.add(e.children),o()),r(()=>(a?.mountedInstances?.add(e.children),()=>{a?.mountedInstances?.delete(e.children)})),r(()=>(a&&(a._pendingUpdate=o),()=>{a&&(a._pendingUpdate=o)})),n(()=>(a&&a._pendingUpdate&&(a._pendingUpdate(),a._pendingUpdate=null),()=>{a&&a._pendingUpdate&&(a._pendingUpdate(),a._pendingUpdate=null)})),null}},325633,(e,a,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var t={default:function(){return v},defaultHead:function(){return h}};for(var s in t)Object.defineProperty(i,s,{enumerable:!0,get:t[s]});let r=e.r(555682),n=e.r(190809),o=e.r(843476),l=n._(e.r(271645)),c=r._(e.r(898879)),d=e.r(742732);function h(){return[(0,o.jsx)("meta",{charSet:"utf-8"},"charset"),(0,o.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function m(e,a){return"string"==typeof a||"number"==typeof a?e:a.type===l.default.Fragment?e.concat(l.default.Children.toArray(a.props.children).reduce((e,a)=>"string"==typeof a||"number"==typeof a?e:e.concat(a),[])):e.concat(a)}e.r(233525);let p=["name","httpEquiv","charSet","itemProp"];function g(e){let a,i,t,s;return e.reduce(m,[]).reverse().concat(h().reverse()).filter((a=new Set,i=new Set,t=new Set,s={},e=>{let r=!0,n=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){n=!0;let i=e.key.slice(e.key.indexOf("$")+1);a.has(i)?r=!1:a.add(i)}switch(e.type){case"title":case"base":i.has(e.type)?r=!1:i.add(e.type);break;case"meta":for(let a=0,i=p.length;a<i;a++){let i=p[a];if(e.props.hasOwnProperty(i))if("charSet"===i)t.has(i)?r=!1:t.add(i);else{let a=e.props[i],t=s[i]||new Set;("name"!==i||!n)&&t.has(a)?r=!1:(t.add(a),s[i]=t)}}}return r})).reverse().map((e,a)=>{let i=e.key||a;return l.default.cloneElement(e,{key:i})})}let v=function({children:e}){let a=(0,l.useContext)(d.HeadManagerContext);return(0,o.jsx)(c.default,{reduceComponentsToState:g,headManager:a,children:e})};("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esMo
21371dule",{value:!0}),Object.assign(i.default,i),a.exports=i.default)},918556,(e,a,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"ImageConfigContext",{enumerable:!0,get:function(){return r}});let t=e.r(555682)._(e.r(271645)),s=e.r(987690),r=t.default.createContext(s.imageConfigDefault)},65856,(e,a,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"RouterContext",{enumerable:!0,get:function(){return t}});let t=e.r(555682)._(e.r(271645)).default.createContext(null)},670965,(e,a,i)=>{"use strict";function t(e,a){let i=e||75;return a?.qualities?.length?a.qualities.reduce((e,a)=>Math.abs(a-i)<Math.abs(e-i)?a:e,a.qualities[0]):i}Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"findClosestQuality",{enumerable:!0,get:function(){return t}})},1948,(e,a,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"default",{enumerable:!0,get:function(){return n}});let t=e.r(670965),s=e.r(543369);function r({config:e,src:a,width:i,quality:n}){let o=(0,s.getDeploymentId)();if(a.startsWith("/")&&!a.startsWith("//")){let e=a.indexOf("?");if(-1!==e){let i=new URLSearchParams(a.slice(e+1)),t=i.get("dpl");if(t){o=t,i.delete("dpl");let s=i.toString();a=a.slice(0,e)+(s?"?"+s:"")}}}if(a.startsWith("/")&&a.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${a}" is using a query string which is not configured in images.localPatterns.
21372Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let l=(0,t.findClosestQuality)(n,e);return`${e.path}?url=${encodeURIComponent(a)}&w=${i}&q=${l}${a.startsWith("/")&&o?`&dpl=${o}`:""}`}r.__next_img_default=!0;let n=r},605500,(e,a,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"Image",{enumerable:!0,get:function(){return y}});let t=e.r(555682),s=e.r(190809),r=e.r(843476),n=s._(e.r(271645)),o=t._(e.r(174080)),l=t._(e.r(325633)),c=e.r(908927),d=e.r(987690),h=e.r(918556);e.r(233525);let m=e.r(65856),p=t._(e.r(1948)),g=e.r(818581),v={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function u(e,a,i,t,s,r,n){let o=e?.src;e&&e["data-loaded-src"]!==o&&(e["data-loaded-src"]=o,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==a&&s(!0),i?.current){let a=new Event("load");Object.defineProperty(a,"target",{writable:!1,value:e});let t=!1,s=!1;i.current({...a,nativeEvent:a,currentTarget:e,target:e,isDefaultPrevented:()=>t,isPropagationStopped:()=>s,persist:()=>{},preventDefault:()=>{t=!0,a.preventDefault()},stopPropagation:()=>{s=!0,a.stopPropagation()}})}t?.current&&t.current(e)}}))}function b(e){return n.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let f=(0,n.forwardRef)(({src:e,srcSet:a,sizes:i,height:t,width:s,decoding:o,className:l,style:c,fetchPriority:d,placeholder:h,loading:m,unoptimized:p,fill:v,onLoadRef:f,onLoadingCompleteRef:x,setBlurComplete:y,setShowAltText:w,sizesInput:_,onLoad:k,onError:j,...N},S)=>{let A=(0,n.useCallback)(e=>{e&&(j&&(e.src=e.src),e.complete&&u(e,h,f,x,y,p,_))},[e,h,f,x,y,j,p,_]),z=(0,g.useMergedRef)(S,A);return(0,r.jsx)("img",{...N,...b(d),loading:m,width:s,height:t,decoding:o,"data-nimg":v?"fill":"1",className:l,style:c,sizes:i,srcSet:a,src:e,ref:z,onLoad:e=>{u(e.currentTarget,h,f,x,y,p,_)},onError:e=>{w(!0),"empty"!==h&&y(!0),j&&j(e)}})});function x({isAppRouter:e,imgAttributes:a}){let i={as:"image",imageSrcSet:a.srcSet,imageSizes:a.sizes,crossOrigin:a.crossOrigin,referrerPolicy:a.referrerPolicy,...b(a.fetchPriority)};return e&&o.default.preload?(o.default.preload(a.src,i),null):(0,r.jsx)(l.default,{children:(0,r.jsx)("link",{rel:"preload",href:a.srcSet?void 0:a.src,...i},"__nimg-"+a.src+a.srcSet+a.sizes)})}let y=(0,n.forwardRef)((e,a)=>{let i=(0,n.useContext)(m.RouterContext),t=(0,n.useContext)(h.ImageConfigContext),s=(0,n.useMemo)(()=>{let e=v||t||d.imageConfigDefault,a=[...e.deviceSizes,...e.imageSizes].sort((e,a)=>e-a),i=e.deviceSizes.sort((e,a)=>e-a),s=e.qualities?.sort((e,a)=>e-a);return{...e,allSizes:a,deviceSizes:i,qualities:s,localPatterns:"u"<typeof window?t?.localPatterns:e.localPatterns}
21372},[t]),{onLoad:o,onLoadingComplete:l}=e,g=(0,n.useRef)(o);(0,n.useEffect)(()=>{g.current=o},[o]);let u=(0,n.useRef)(l);(0,n.useEffect)(()=>{u.current=l},[l]);let[b,y]=(0,n.useState)(!1),[w,_]=(0,n.useState)(!1),{props:k,meta:j}=(0,c.getImgProps)(e,{defaultLoader:p.default,imgConf:s,blurComplete:b,showAltText:w});return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(f,{...k,unoptimized:j.unoptimized,placeholder:j.placeholder,fill:j.fill,onLoadRef:g,onLoadingCompleteRef:u,setBlurComplete:y,setShowAltText:_,sizesInput:e.sizes,ref:a}),j.preload?(0,r.jsx)(x,{isAppRouter:!i,imgAttributes:k}):null]})});("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),a.exports=i.default)},794909,(e,a,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var t={default:function(){return d},getImageProps:function(){return c}};for(var s in t)Object.defineProperty(i,s,{enumerable:!0,get:t[s]});let r=e.r(555682),n=e.r(908927),o=e.r(605500),l=r._(e.r(1948));function c(e){let{props:a}=(0,n.getImgProps)(e,{defaultLoader:l.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,i]of Object.entries(a))void 0===i&&delete a[e];return{props:a}}let d=o.Image},657688,(e,a,i)=>{a.exports=e.r(794909)},741833,e=>{"use strict";
21372var a=e.i(843476),i=e.i(657688),t=e.i(522016),s=e.i(468158),r=e.i(271645);e.i(103466);var n=e.i(387289);let o="fenul-com-theme";function l(e){let a=document.getElementById("fn-root");if(a){if("auto"===e){a.removeAttribute("data-fn-theme"),[...Object.keys(n.FACTLEN_LIGHT_THEME),...Object.keys(n.FACTLEN_DARK_THEME)].forEach(e=>{a.style.removeProperty(e)});return}a.setAttribute("data-fn-theme",e),Object.entries("light"===e?n.FACTLEN_LIGHT_THEME:n.FACTLEN_DARK_THEME).forEach(([e,i])=>a.style.setProperty(e,i))}}function c(){let[e,i]=(0,r.useState)("auto");(0,r.useEffect)(()=>{let e=localStorage.getItem(o),a="light"===e||"dark"===e?e:"auto";i(a),l(a)},[]);let t=(0,r.useCallback)(e=>{i(e),"auto"===e?localStorage.removeItem(o):localStorage.setItem(o,e),l(e)},[]),s=[{value:"auto",label:"Auto",icon:(0,a.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":!0,children:[(0,a.jsx)("circle",{cx:"7",cy:"7",r:"5.5"}),(0,a.jsx)("line",{x1:"7",y1:"1.5",x2:"7",y2:"12.5"}),(0,a.jsx)("path",{d:"M1.5 7h5.5"}),(0,a.jsx)("path",{d:"M4 3.7 7 7l-3 3.3"})]})},{value:"light",label:"Light",icon:(0,a.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":!0,children:[(0,a.jsx)("circle",{cx:"7",cy:"7",r:"2.5"}),(0,a.jsx)("line",{x1:"7",y1:"1",x2:"7",y2:"2.2"}),(0,a.jsx)("line",{x1:"7",y1:"11.8",x2:"7",y2:"13"}),(0,a.jsx)("line",{x1:"1",y1:"7",x2:"2.2",y2:"7"}),(0,a.jsx)("line",{x1:"11.8",y1:"7",x2:"13",y2:"7"})]})},{value:"dark",label:"Dark",icon:(0,a.jsx)("svg",{width:"13",height:"13",viewBox:"0 0 14 14",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round","aria-hidden":!0,children:(0,a.jsx)("path",{d:"M12.2 8.2A5.5 5.5 0 1 1 5.8 1.8a4.3 4.3 0 0 0 6.4 6.4z"})})}];return(0,a.jsx)("div",{className:"fn-theme-toggle",role:"group","aria-label":"Color theme",children:s.map(i=>(0,a.jsx)("button",{type:"button",onClick:()=>t(i.value),title:i.label,"aria-label":`${i.label} theme`,"aria-pressed":e===i.value,children:i.icon},i.value))})}var d=e.i(247167);e.i(116233);var h=e.i(268141);function m({sectionId:e,sectionTitle:i,compact:t=!1}){let[s,n]=(0,r.useState)({kind:"idle"}),[o,l]=(0,r.useState)(!1);async function c(a){a.preventDefault();let t=a.currentTarget,s=new FormData(t),r=String(s.get("company_website")??"").trim(),o=String(s.get("cf-turnstile-response")??"").trim(),c={service_pillar:e,service_pillar_label:i};for(let[e,a]of s.entries())"company_website"!==e&&"cf-turnstile-response"!==e&&"string"==typeof a&&(c[e]=a.trim());l(!0);try{let e=await fetch("/api/leads",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({siteKey:"fenul.com",siteName:"Fenul",pageSlug:"/",pageTitle:`Fenul inquiry — ${i}`,sourceUrl:window.location.href,honeypot:r,turnstileToken:o,fields:c})}),a=await e.json().catch(()=>null);if(!e.ok)throw Error(a?.message??"Unable to send your inquiry right now.");t.reset(),n({kind:"success",message:a?.message??"Thank you — we received your inquiry and will follow up shortly."})}catch(e){n({kind:"error",message:e instanceof Error?e.message:"Unable to send your inquiry right now."})}finally{l(!1)}}return(0,a.jsxs)("form",{className:`fn-inquiry${t?" fn-inquiry--compact":""}`,onSubmit:c,children:[(0,a.jsxs)("p",{className:"fn-inquiry-label",children:["Tell us how we can help with ",i.toLowerCase()]}),(0,a.jsxs)("div",{className:"fn-inquiry-grid",children:[(0,a.jsxs)("label",{className:"fn-field",children:[(0,a.jsx)("span",{children:"Full name"}),(0,a.jsx)("input",{name:"full_name",type:"text",required:!0,autoComplete:"name"})]}),(0,a.jsxs)("label",{className:"fn-field",children:[(0,a.jsx)("span",{children:"Email"}),(0,a.jsx)("input",{name:"email",type:"email",required:!0,autoComplete:"email"})]}),(0,a.jsxs)("label",{className:"fn-field",children:[(0,a.jsx)("span",{children:"Phone"}),(0,a.jsx)("input",{name:"phone",type:"tel",required:!0,autoComplete:"tel"})]}),(0,a.jsxs)("label",{className:"fn-field",children:[(0,a.jsxs)("span",{children:["Company ",(0,a.jsx)("em",{children:"(optional)"})]}),(0,a.jsx)("input",{name:"company",type:"text",autoComplete:"organization"})]}),(0,a.jsxs)("label",{className:"fn-field fn-field--full",children:[(0,a.jsx)("span",{children:"You are"}),(0,a.jsxs)("select",{name:"audience_type",defaultValue:"",required:!0,children:[(0,a.jsx)("option",{value:"",disabled:!0,children:"Select one"}),(0,a.jsx)("option",{value:"Business",children:"Business"}),(0,a.jsx)("option",{value:"High net worth individual",children:"High net worth individual"}),(0,a.jsx)("option",{value:"Both / family office",children:"Both / family office"})]})]}),(0,a.jsxs)("label",{className:"fn-field fn-field--full",children:[(0,a.jsx)("span",{children:"What should we know?"}),(0,a.jsx)("textarea",{name:"message",rows:t?3:4,placeholder:"Goals, timeline, current situation, or questions…",required:!0})]})]}),(0,a.jsxs)("label",{className:"fn-honeypot","aria-hidden":"true",children:[(0,a.jsx)("span",{children:"Leave blank"}),(0,a.jsx)("input",{name:"company_website",type:"text",tabIndex:-1,autoComplete:"off"})]}),d.default.env.NEXT_PUBLIC_TURNSTILE_SITE_KEY?(0,a.jsx)(h.TurnstileWidget,{siteKey:d.default.env.NEXT_PUBLIC_TURNSTILE_SITE_KEY}):null,(0,a.jsx)("button",{className:"fn-btn fn-btn-primary fn-inquiry-submit",type:"submit",disabled:o,children:o?"Sending…":"Send inquiry"}),(0,a.jsx)("p",{role:"error"===s.kind?"alert":"status","aria-live":"polite","aria-atomic":"true",className:"idle"===s.kind?"sr-only":`fn-inquiry-status fn-inquiry-status--${s.kind}`,children:"idle"===s.kind?"":s.message})]})}let p="https://media.fenul.com/fenul",g={heroSystems:`${p}/hero_systems_thinking.webp`,portfolio:`${p}/hero_portfolio_review.webp`,allocation:`${p}
21372/chart_asset_allocation_efficient_frontier.webp`,taxAlpha:`${p}/infographic_tax_alpha_levers.webp`},v=[{id:"real-estate-strategy",pillar:"wealth",icon:"◎",title:"Real Estate Investment Strategy",headline:"Acquire and allocate real assets with an operator's discipline",body:"We model cap rates, hold periods, leverage bands, and tax posture together — not as isolated spreadsheets. Whether you are building a rental stack or positioning for a strategic exit, we design the capital stack before the first offer.",bullets:["Market selection & scenario bands","Hold vs. exit decision trees","1031 and entity-structure awareness"],image:g.heroSystems,imageAlt:"Strategic finance professional reviewing integrated real-asset framework"},{id:"remodel-flip",pillar:"wealth",icon:"△",title:"Remodel & Flip Strategy",headline:"Flip and reposition projects with margin clarity, not guesswork",body:"Renovation economics fail when scope, timeline, and capital cost drift apart. We pressure-test ARV bands, contractor risk, and carry cost so you know whether a flip is an investment or an expensive hobby.",bullets:["Scope-to-margin modeling","Carry & contingency bands","Exit timing against local absorption"],image:g.portfolio,imageAlt:"Portfolio and project review for real-estate repositioning"},{id:"portfolio-management",pillar:"wealth",icon:"◈",title:"Portfolio Management",headline:"One portfolio view across accounts, risk, and tax drag",body:"Fragmented accounts create duplicate risk and silent tax leakage. We unify public markets, alternatives, and real assets into a single risk-managed allocation aligned to your liquidity and legacy timeline.",bullets:["Cross-custodian allocation map","Rebalance & tax-loss coordination","Liquidity ladder design"],image:g.allocation,imageAlt:"Efficient frontier chart illustrating portfolio risk and return trade-offs"},{id:"quant-fund-design",pillar:"wealth",icon:"⬡",title:"Quant Fund Design",headline:"Bespoke systematic strategies for high-net-worth capital",body:"When off-the-shelf funds do not match your mandate, we design rules-based sleeves — factor tilts, risk parity overlays, and tax-aware implementation — sized for concentrated wealth, not retail AUM tiers.",bullets:["Mandate & constraint specification","Backtest with honest assumptions","Implementation & oversight cadence"],image:g.allocation,imageAlt:"Quantitative portfolio design visualization"},{id:"ai-growth",pillar:"ai",icon:"◇",title:"AI Solutions for Growth",headline:"Deploy AI where it moves revenue, not slide decks",body:"We build growth systems — lead scoring, content pipelines, operator copilots, and decision support — grounded in your data and workflows. The goal is measurable lift, not a generic chatbot on the homepage.",bullets:["Workflow mapping before model selection","Human-in-the-loop guardrails","ROI checkpoints every sprint"],image:g.taxAlpha,imageAlt:"Infographic illustrating multi-lever growth and efficiency systems"},{id:"complex-app-dev",pillar:"ai",icon:"○",title:"Complex App Development",headline:"Ship serious software when spreadsheets stop scaling",body:"Multi-tenant platforms, data-heavy dashboards, auth, billing, and ops automation — we build production-grade applications that survive real users and real compliance conversations.",bullets:["Architecture & tenancy design","Web + mobile parity planning","Observability from day one"],image:g.heroSystems,imageAlt:"Systems-oriented product development planning"},{id:"review-summaries",pillar:"ai",icon:"▣",title:"Customer Review Summaries",headline:"Turn noisy reviews into decisions operators can act on",body:"We ingest review streams across marketplaces and locations, cluster themes, surface risks, and deliver executive summaries — so product and CX teams respond to signal, not star averages alone.",bullets:["Theme clustering & sentiment bands","Location / SKU drill-down","Weekly operator briefs"],image:g.taxAlpha,imageAlt:"Structured summary visualization for customer feedback intelligence"},{id:"ai-product-tags",pillar:"ai",icon:"◆",title:"AI Product Tags",headline:"Enrich catalogs with consistent, searchable product intelligence",body:"Manual tagging does not scale across thousands of SKUs. We generate structured attributes, compliance-aware labels, and cross-sell hooks that stay consistent across channels and languages.",bullets:["Attribute schemas per category","Human QA sampling loops","Channel-specific export formats"],image:g.portfolio,imageAlt:"Catalog intelligence and product metadata enrichment"},{id:"media-at-scale",pillar:"ai",icon:"✦",title:"Product Images & Video at Scale",headline:"High-fidelity visuals and motion without a studio bottleneck",body:"From pack shots to lifestyle scenes and short-form product video, we run generation pipelines with brand guardrails — so merchandising teams publish faster without sacrificing fidelity.",bullets:["Brand-safe prompt & layout systems","Batch generation with QA gates","Channel-ready aspect ratios & formats"],image:g.portfolio,imageAlt:"High-fidelity product imagery pipeline at scale"}],u=[{step:"01",title:"Structured intake",body:"Tell us your situation through the section form — business, HNW, or family-office context. No pitch deck on the first call."},{step:"02",title:"Systems diagnosis",body:"We map capital, operations, data, and risk as one system. Gaps and leverage points surface before any recommendation."},{step:"03",title:"Scenario delivery",body:"You receive clear options with trade-offs — not a single prescribed product. Models are illustrative; decisions stay yours."},{step:"04",title:"Execution partnership",body:"When you engage, we coordinate specialists, software, and capital structure so nothing falls between silos."}],b=[{value:"2",label:"Integrated pillars — wealth & AI"},{value:"9",label:"Specialist service tracks"},{value:"1",label:"Systems view across capital & ops"},{value:"B2B",label:"Built for operators & HNW principals"}],f=`
21373.fn-wrap{
21374  --fn-radius:16px;
21375  --fn-ease:cubic-bezier(.4,0,.2,1);
21376  --site-display-font:var(--font-outfit),system-ui,sans-serif;
21377  --site-body-font:var(--font-inter),system-ui,sans-serif;
21378  --site-bg:#ffffff;
21379  --site-fg:#161616;
21380  --site-accent:#C8102E;
21381  --site-soft:#fef2f2;
21382  --site-border:#e6e6e6;
21383  --site-muted:#f6f6f6;
21384  --site-accent-soft:#fde2e6;
21385  --site-card:#ffffff;
21386  --site-for:#1d7a37;
21387  --site-against:#C8102E;
21388  --site-on-accent:#ffffff;
21389  --fn-fg-muted:color-mix(in srgb,var(--site-fg) 68%,transparent);
21390  /* 48% composited to #8f8f8f on white = 3.23:1, failing WCAG 1.4.3 (needs 4.5)
21391     on 22 nodes: every .fn-nav-links item and section label. Black at 48% over
21392     white cannot reach 4.5 — the composite must be <= #767676, i.e. >=53%
21393     opacity. 62% gives margin and only ever INCREASES contrast in dark mode
21394     too, where the same token sits light-on-dark. */
21395  --fn-fg-soft:color-mix(in srgb,var(--site-fg) 62%,transparent);
21396  --fn-glass:color-mix(in srgb,var(--site-card) 82%,transparent);
21397  font-family:var(--site-body-font);
21398  background:var(--site-bg);
21399  color:var(--site-fg);
21400  line-height:1.65;
21401  overflow-x:hidden;
21402  min-height:100vh;
21403  -webkit-font-smoothing:antialiased;
21404}
21405@media (prefers-color-scheme:dark){
21406  .fn-wrap:not([data-fn-theme="light"]){
21407    --site-bg:#0d1117;
21408    --site-fg:#d4d4d4;
21409    --site-accent:#C8102E;
21410    --site-soft:#0d2b28;
21411    --site-border:#30363d;
21412    --site-muted:#161b22;
21413    --site-accent-soft:#0d2b28;
21414    --site-card:#161b22;
21415    --site-for:#3fb950;
21416    --site-against:#f85149;
21417    --site-on-accent:#ffffff;
21418    --fn-glass:color-mix(in srgb,var(--site-card) 90%,transparent);
21419  }
21420}
21421.fn-wrap[data-fn-theme="light"]{
21422  --site-bg:#ffffff;--site-fg:#161616;--site-accent:#C8102E;--site-soft:#fef2f2;
21423  --site-border:#e6e6e6;--site-muted:#f6f6f6;--site-accent-soft:#fde2e6;--site-card:#ffffff;
21424  --site-for:#1d7a37;--site-against:#C8102E;--site-on-accent:#ffffff;
21425}
21426.fn-wrap[data-fn-theme="dark"]{
21427  --site-bg:#0d1117;--site-fg:#d4d4d4;--site-accent:#C8102E;--site-soft:#0d2b28;
21428  --site-border:#30363d;--site-muted:#161b22;--site-accent-soft:#0d2b28;--site-card:#161b22;
21429  --site-for:#3fb950;--site-against:#f85149;--site-on-accent:#ffffff;
21430}
21431.fn-wrap::before{
21432  content:'';position:fixed;inset:0;pointer-events:none;z-index:0;
21433  background:
21434    radial-gradient(900px 500px at 8% -5%,color-mix(in srgb,var(--site-accent) 10%,transparent),transparent 58%),
21435    radial-gradient(600px 400px at 94% 8%,color-mix(in srgb,var(--site-for) 6%,transparent),transparent 60%);
21436}
21437.fn-nav{
21438  position:fixed;top:0;left:0;right:0;z-index:100;
21439  display:flex;align-items:center;justify-content:space-between;
21440  padding:0 clamp(16px,4vw,40px);height:60px;
21441  border-bottom:1px solid color-mix(in srgb,var(--site-border) 70%,transparent);
21442  background:color-mix(in srgb,var(--site-bg) 88%,transparent);
21443  backdrop-filter:blur(20px) saturate(1.4);
21444}
21445.fn-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--site-fg);font-family:var(--site-display-font);font-weight:800;font-size:1.05rem;letter-spacing:-.03em}
21446.fn-brand-mark{width:24px;height:16px;color:var(--site-accent-text)}
21447.fn-nav-links{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
21448.fn-nav-links a{font-size:.78rem;font-weight:500;color:var(--fn-fg-soft);text-decoration:none;padding:6px 10px;border-radius:8px;transition:color .2s,background .2s}
21449.fn-nav-links a:hover{color:var(--site-fg);background:color-mix(in srgb,var(--site-muted) 60%,transparent)}
21450.fn-nav-actions{display:flex;align-items:center;gap:10px}
21451.fn-theme-toggle{display:flex;gap:2px;padding:3px;border-radius:10px;border:1px solid color-mix(in srgb,var(--site-border) 80%,transparent);background:color-mix(in srgb,var(--site-muted) 50%,transparent)}
21452.fn-theme-toggle button{display:flex;align-items:center;justify-content:center;width:30px;height:28px;border:none;border-radius:7px;background:transparent;color:var(--fn-fg-soft);cursor:pointer;transition:background .2s,color .2s}
21453.fn-theme-toggle button[aria-pressed="true"]{background:var(--site-accent);color:var(--site-on-accent)}
21454.fn-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 20px;border-radius:10px;font-size:.84rem;font-weight:600;text-decoration:none;border:1px solid transparent;cursor:pointer;transition:transform .18s var(--fn-ease),opacity .2s,background .2s,border-color .2s}
21455.fn-btn-primary{background:var(--site-accent);color:var(--site-on-accent)}
21456.fn-btn-primary:hover{opacity:.92;transform:translateY(-1px)}
21457.fn-btn-ghost{border-color:color-mix(in srgb,var(--site-border) 90%,transparent);color:var(--site-fg);background:color-mix(in srgb,var(--site-card) 60%,transparent)}
21458.fn-btn-ghost:hover{border-color:var(--site-accent);color:var(--site-accent-text)}
21459.fn-hero{position:relative;z-index:1;min-height:100vh;display:flex;align-items:center;padding:100px clamp(16px,4vw,40px) 80px}
21460.fn-hero-grid{display:grid;grid-template-columns:1fr;gap:48px;max-width:1240px;margin:0 auto;width:100%}
21461@media(min-width:960px){.fn-hero-grid{grid-template-columns:1.05fr .95fr;align-items:center}}
21462.fn-eyebrow{font-size:.62rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--site-accent-text);margin-bottom:18px}
21463.fn-h1{font-family:var(--site-display-font);font-size:clamp(2.6rem,7vw,4.8rem);font-weight:800;line-height:1.02;letter-spacing:-.04em;margin-bottom:20px}
21464.fn-h1 em{font-style:normal;color:var(--site-accent-text)}
21465.fn-lead{font-size:clamp(1rem,1.8vw,1.12rem);color:var(--fn-fg-muted);max-width:52ch;line-height:1.8;margin-bottom:28px}
21466.fn-hero-ctas{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:36px}
21467.fn-hero-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
21468@media(min-width:640px){.fn-hero-stats{grid-template-columns:repeat(4,1fr)}}
21469.fn-stat-pill{padding:14px 16px;border-radius:12px;border:1px solid color-mix(in srgb,var(--site-border) 80%,transparent);background:var(--fn-glass)}
21470.fn-stat-pill strong{display:block;font-family:var(--site-display-font);font-size:1.1rem;font-weight:800;color:var(--site-accent-text);margin-bottom:4px}
21471.fn-stat-pill span{font-size:.72rem;color:var(--fn-fg-soft);line-height:1.45}
21472.fn-hero-visual{position:relative;min-height:360px}
21473.fn-float{position:absolute;border-radius:var(--fn-radius);overflow:hidden;border:1px solid color-mix(in srgb,var(--site-border) 85%,transparent);box-shadow:0 20px 60px -24px color-mix(in srgb,#000 35%,transparent)}
21474.fn-float img{width:100%;height:100%;object-fit:cover;display:block}
21475.fn-float-1{width:72%;top:0;right:0;aspect-ratio:4/3;animation:fnFloat1 9s ease-in-out infinite}
21476.fn-float-2{width:58%;bottom:4%;left:0;aspect-ratio:5/4;animation:fnFloat2 11s ease-in-out infinite}
21477.fn-float-3{width:44%;top:38%;left:28%;aspect-ratio:1/1;animation:fnFloat3 10s ease-in-out infinite}
21478@keyframes fnFloat1{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-14px) rotate(-2deg)}}
21479@keyframes fnFloat2{0%,100%{transform:translateY(0) rotate(3deg)}50%{transform:translateY(-18px) rotate(3deg)}}
21480@keyframes fnFloat3{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-10px) rotate(-4deg)}}
21481.fn-section{position:relative;z-index:1;padding:100px clamp(16px,4vw,40px)}
21482.fn-section--alt{background:color-mix(in srgb,var(--site-muted) 55%,transparent)}
21483.fn-container{max-width:1180px;margin:0 auto}
21484.fn-h2{font-family:var(--site-display-font);font-size:clamp(1.9rem,4vw,3rem);font-weight:800;letter-spacing:-.035em;line-height:1.08;margin-bottom:16px}
21485.fn-section-lead{color:var(--fn-fg-muted);max-width:60ch;line-height:1.8;margin-bottom:48px}
21486.fn-pillar-row{display:grid;grid-template-columns:1fr;gap:14px;margin-bottom:56px}
21487@media(min-width:768px){.fn-pillar-row{grid-template-columns:1fr 1fr}}
21488.fn-pillar-card{padding:28px;border-radius:var(--fn-radius);border:1px solid color-mix(in srgb,var(--site-border) 85%,transparent);background:var(--fn-glass)}
21489.fn-pillar-card h3{font-family:var(--site-display-font);font-size:1.35rem;font-weight:800;margin-bottom:10px}
21490.fn-pillar-card p{color:var(--fn-fg-muted);font-size:.92rem;line-height:1.75}
21491.fn-pillar-tag{display:inline-block;margin-bottom:12px;padding:4px 10px;border-radius:100px;font-size:.62rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;background:var(--site-accent-soft);color:var(--site-accent-text)}
21492.fn-service{display:grid;grid-template-columns:1fr;gap:32px;padding:48px 0;border-top:1px solid color-mix(in srgb,var(--site-border) 70%,transparent)}
21493@media(min-width:900px){.fn-service{grid-template-columns:1fr 1fr;gap:48px;align-items:start}}
21494.fn-service:nth-child(even) .fn-service-copy{order:2}
21495.fn-service:nth-child(even) .fn-service-side{order:1}
21496.fn-service-icon{font-size:1.4rem;color:var(--site-accent-text);margin-bottom:10px}
21497.fn-service h3{font-family:var(--site-display-font);font-size:clamp(1.4rem,2.5vw,1.9rem);font-weight:800;letter-spacing:-.03em;margin-bottom:12px}
21498.fn-service-body{color:var(--fn-fg-muted);line-height:1.8;margin-bottom:16px}
21499.fn-bullets{list-style:none;padding:0;margin:0 0 8px;display:grid;gap:8px}
21500.fn-bullets li{position:relative;padding-left:18px;font-size:.88rem;color:var(--fn-fg-muted)}
21501.fn-bullets li::before{content:'';position:absolute;left:0;top:.55em;width:6px;height:6px;border-radius:50%;background:var(--site-accent)}
21502.fn-service-visual{border-radius:var(--fn-radius);overflow:hidden;border:1px solid color-mix(in srgb,var(--site-border) 85%,transparent);background:var(--site-card);aspect-ratio:4/3;position:relative}
21503.fn-process-grid{display:grid;grid-template-columns:1fr;gap:0}
21504@media(min-width:800px){.fn-process-grid{grid-template-columns:repeat(4,1fr)}}
21505.fn-step{padding:28px 0;border-top:1px solid color-mix(in srgb,var(--site-border) 70%,transparent)}
21506@media(min-width:800px){.fn-step{padding:32px 24px 0}.fn-step:first-child{padding-left:0}.fn-step:last-child{padding-right:0}}
21507.fn-step-num{font-size:.62rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--fn-fg-soft);margin-bottom:20px}
21508.fn-step h3{font-family:var(--site-display-font);font-size:1rem;font-weight:700;margin-bottom:10px}
21509.fn-step p{font-size:.86rem;color:var(--fn-fg-muted);line-height:1.75}
21510.fn-stats-row{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:color-mix(in srgb,var(--site-border) 80%,transparent);border:1px solid color-mix(in srgb,var(--site-border) 80%,transparent);border-radius:var(--fn-radius);overflow:hidden}
21511@media(min-width:700px){.fn-stats-row{grid-template-columns:repeat(4,1fr)}}
21512.fn-stats-cell{padding:32px 24px;background:var(--fn-glass);text-align:center}
21513.fn-stats-cell strong{display:block;font-family:var(--site-display-font);font-size:clamp(1.8rem,4vw,2.6rem);font-weight:800;color:var(--site-accent-text);margin-bottom:8px}
21514.fn-stats-cell span{font-size:.78rem;color:var(--fn-fg-soft)}
21515.fn-inquiry{margin-top:24px;padding:22px;border-radius:var(--fn-radius);border:1px solid color-mix(in srgb,var(--site-border) 85%,transparent);background:color-mix(in srgb,var(--site-card) 70%,transparent)}
21516.fn-inquiry-label{font-size:.82rem;font-weight:600;margin-bottom:14px;color:var(--site-fg)}
21517.fn-inquiry-grid{display:grid;grid-template-columns:1fr;gap:12px}
21518@media(min-width:600px){.fn-inquiry-grid{grid-template-columns:1fr 1fr}}
21519.fn-field{display:grid;gap:6px;font-size:.78rem;font-weight:500;color:var(--fn-fg-muted)}
21520.fn-field--full{grid-column:1/-1}
21521/* No opacity here: the parent .fn-field already uses --fn-fg-muted (68% of
21522   --site-fg), and .7 on top compounds to ~47% — #909090 on white, 3.19:1,
21523   failing WCAG 1.4.3 on every '(optional)' hint. Weight alone de-emphasises. */
21524.fn-field em{font-style:normal;font-weight:400}
21525.fn-field input,.fn-field select,.fn-field textarea{
21526  width:100%;padding:10px 12px;border-radius:10px;border:1px solid color-mix(in srgb,var(--site-border) 90%,transparent);
21527  background:color-mix(in srgb,var(--site-bg) 70%,transparent);color:var(--site-fg);font:inherit;font-weight:400;
21528  outline:none;transition:border-color .2s,box-shadow .2s;
21529}
21530.fn-field input:focus,.fn-field select:focus,.fn-field textarea:focus{
21531  border-color:var(--site-accent);
21532  box-shadow:0 0 0 3px color-mix(in srgb,var(--site-accent) 22%,transparent);
21533}
21534.fn-inquiry-submit{width:100%;margin-top:14px}
21535.fn-inquiry-status{margin-top:12px;padding:12px;border-radius:10px;font-size:.82rem;line-height:1.5}
21536.fn-inquiry-status--success{background:color-mix(in srgb,var(--site-for) 12%,transparent);color:var(--site-for)}
21537.fn-inquiry-status--error{background:color-mix(in srgb,var(--site-against) 12%,transparent);color:var(--site-against)}
21538.fn-honeypot{position:absolute;
21538left:-9999px;opacity:0;height:0;overflow:hidden}
21539.fn-footer{position:relative;z-index:1;padding:56px clamp(16px,4vw,40px) 40px;border-top:1px solid color-mix(in srgb,var(--site-border) 70%,transparent)}
21540.fn-footer-inner{max-width:1180px;margin:0 auto;display:grid;gap:24px}
21541.fn-footer-brand{font-family:var(--site-display-font);font-weight:800;font-size:1.1rem;margin-bottom:8px}
21542.fn-footer p,.fn-footer a{font-size:.82rem;color:var(--fn-fg-soft);line-height:1.7;text-decoration:none}
21543.fn-footer a:hover{color:var(--site-accent-text)}
21544.fn-footer-nav{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px}
21545.fn-disclaimer{font-size:.72rem;color:var(--fn-fg-soft);line-height:1.65;max-width:72ch}
21546@media(max-width:767px){.fn-nav-links{display:none}}
21547`;e.s(["FenulComPage",0,function({siteBasePath:e=""}){let r=a=>`${e&&"/"!==e?e:""}${a}`,n=v.filter(e=>"wealth"===e.pillar),o=v.filter(e=>"ai"===e.pillar);return(0,a.jsxs)("div",{id:"fn-root",className:"fn-wrap",children:[(0,a.jsx)("style",{"data-fenul-com":"true",dangerouslySetInnerHTML:{__html:f}}),(0,a.jsx)(s.SkipToContent,{}),(0,a.jsxs)("nav",{className:"fn-nav","aria-label":"Primary",children:[(0,a.jsxs)(t.default,{href:e||"/",className:"fn-brand",children:[(0,a.jsxs)("svg",{className:"fn-brand-mark",viewBox:"0 0 28 18",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round","aria-hidden":!0,children:[(0,a.jsx)("polyline",{points:"1,15 7,9 12,12 19,5 25,2",strokeWidth:"1.8"}),(0,a.jsx)("circle",{cx:"25",cy:"2",r:"2.2",fill:"currentColor",stroke:"none"})]}),"Fenul"]}),(0,a.jsxs)("div",{className:"fn-nav-links",children:[(0,a.jsx)("a",{href:"#wealth",children:"Wealth"}),(0,a.jsx)("a",{href:"#ai",children:"AI & Growth"}),(0,a.jsx)("a",{href:"#process",children:"How it works"}),(0,a.jsx)("a",{href:"#contact",children:"Business inquiry"})]}),(0,a.jsxs)("div",{className:"fn-nav-actions",children:[(0,a.jsx)(c,{}),(0,a.jsx)(t.default,{href:r("/contact"),className:"fn-btn fn-btn-primary",children:"Find an advisor"})]})]}),(0,a.jsx)("div",{id:"main-content",tabIndex:-1}),(0,a.jsx)("header",{className:"fn-hero",children:(0,a.jsxs)("div",{className:"fn-hero-grid",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"fn-eyebrow",children:"Total wealth & AI solutions"}),(0,a.jsxs)("h1",{className:"fn-h1",children:["Capital, systems,",(0,a.jsx)("br",{}),"and ",(0,a.jsx)("em",{children:"intelligent growth."})]}),(0,a.jsx)("p",{className:"fn-lead",children:"Fenul helps businesses and high-net-worth principals align real-asset strategy, portfolio design, and AI-powered operations — one integrated operator, not a patchwork of vendors."}),(0,a.jsxs)("div",{className:"fn-hero-ctas",children:[(0,a.jsx)(t.default,{href:r("/contact"),className:"fn-btn fn-btn-primary",children:"Get matched with an advisor"}),(0,a.jsx)("a",{href:"#wealth",className:"fn-btn fn-btn-ghost",children:"Explore wealth services"}),(0,a.jsx)("a",{href:"#ai",className:"fn-btn fn-btn-ghost",children:"Explore AI solutions"})]}),(0,a.jsx)("div",{className:"fn-hero-stats",children:b.map(e=>(0,a.jsxs)("div",{className:"fn-stat-pill",children:[(0,a.jsx)("strong",{children:e.value}),(0,a.jsx)("span",{children:e.label})]},e.label))})]}),(0,a.jsxs)("div",{className:"fn-hero-visual","aria-hidden":!0,children:[(0,a.jsx)("div",{className:"fn-float fn-float-1",children:(0,a.jsx)(i.default,{src:g.heroSystems,unoptimized:!0,alt:"",width:640,height:480,sizes:"(max-width: 960px) 72vw, 420px",priority:!0})}),(0,a.jsx)("div",{className:"fn-float fn-float-2",children:(0,a.jsx)(i.default,{src:g.allocation,unoptimized:!0,alt:"",width:480,height:384,sizes:"(max-width: 960px) 58vw, 340px"})}),(0,a.jsx)("div",{className:"fn-float fn-float-3",children:(0,a.jsx)(i.default,{src:g.taxAlpha,unoptimized:!0,alt:"",width:360,height:360,sizes:"(max-width: 960px) 44vw, 260px"})})]})]})}),(0,a.jsx)("section",{className:"fn-section fn-section--alt",id:"pillars",children:(0,a.jsxs)("div",{className:"fn-container",children:[(0,a.jsx)("p",{className:"fn-eyebrow",children:"Two integrated pillars"}),(0,a.jsx)("h2",{className:"fn-h2",children:"Everything your balance sheet and growth engine need"}),(0,a.jsx)("p",{className:"fn-section-lead",children:"Inspired by a platform-first service layout — but built for B2B operators and principals who think in systems. Each track below includes a direct inquiry form so we understand your context before any conversation."}),(0,a.jsxs)("div",{className:"fn-pillar-row",children:[(0,a.jsxs)("article",{className:"fn-pillar-card",id:"wealth",children:[(0,a.jsx)("span",{className:"fn-pillar-tag",children:"Pillar I — Wealth"}),(0,a.jsx)("h3",{children:"Real assets, portfolios & quantitative design"}),(0,a.jsx)("p",{children:"Real estate strategy, remodel and flip economics, unified portfolio management, and bespoke quant sleeves for concentrated wealth — modeled together, not in silos."})]}),(0,a.jsxs)("article",{className:"fn-pillar-card",id:"ai",children:[(0,a.jsx)("span",{className:"fn-pillar-tag",children:"Pillar II — AI & Growth"}),(0,a.jsx)("h3",{children:"Software, intelligence & media at scale"}),(0,a.jsx)("p",{children:"AI growth systems, complex application development, review intelligence, product tagging, and high-fidelity imagery and video pipelines — shipped with operator-grade rigor."})]})]})]})}),(0,a.jsx)("section",{className:"fn-section","aria-labelledby":"wealth-heading",children:(0,a.jsxs)("div",{className:"fn-container",children:[(0,a.jsx)("p",{className:"fn-eyebrow",children:"Wealth & real assets"}),(0,a.jsx)("h2",{className:"fn-h2",id:"wealth-heading",children:"Total wealth architecture"}),(0,a.jsx)("p",{className:"fn-section-lead",children:"For founders, family offices, and executives who need capital structure, allocation, and real-asset decisions in one view."}),n.map(e=>(0,a.jsxs)("article",{className:"fn-service",id:e.id,children:[(0,a.jsxs)("div",{className:"fn-service-copy",children:[(0,a.jsx)("span",{className:"fn-service-icon","aria-hidden":!0,
21547children:e.icon}),(0,a.jsx)("h3",{children:e.title}),(0,a.jsxs)("p",{className:"fn-service-body",children:[(0,a.jsx)("strong",{children:e.headline})," ",e.body]}),(0,a.jsx)("ul",{className:"fn-bullets",children:e.bullets.map(e=>(0,a.jsx)("li",{children:e},e))}),(0,a.jsx)(m,{sectionId:e.id,sectionTitle:e.title,compact:!0})]}),(0,a.jsx)("div",{className:"fn-service-side",children:(0,a.jsx)("div",{className:"fn-service-visual",children:(0,a.jsx)(i.default,{src:e.image,unoptimized:!0,alt:e.imageAlt,fill:!0,sizes:"(max-width: 900px) 100vw, 50vw",style:{objectFit:"cover"}})})})]},e.id))]})}),(0,a.jsx)("section",{className:"fn-section fn-section--alt","aria-labelledby":"ai-heading",children:(0,a.jsxs)("div",{className:"fn-container",children:[(0,a.jsx)("p",{className:"fn-eyebrow",children:"AI & growth engineering"}),(0,a.jsx)("h2",{className:"fn-h2",id:"ai-heading",children:"Intelligent systems that scale with your business"}),(0,a.jsx)("p",{className:"fn-section-lead",children:"From growth automation to catalog intelligence and studio-grade visuals — built for operators who measure outcomes, not demos."}),o.map(e=>(0,a.jsxs)("article",{className:"fn-service",id:e.id,children:[(0,a.jsxs)("div",{className:"fn-service-copy",children:[(0,a.jsx)("span",{className:"fn-service-icon","aria-hidden":!0,children:e.icon}),(0,a.jsx)("h3",{children:e.title}),(0,a.jsxs)("p",{className:"fn-service-body",children:[(0,a.jsx)("strong",{children:e.headline})," ",e.body]}),(0,a.jsx)("ul",{className:"fn-bullets",children:e.bullets.map(e=>(0,a.jsx)("li",{children:e},e))}),(0,a.jsx)(m,{sectionId:e.id,sectionTitle:e.title,compact:!0})]}),(0,a.jsx)("div",{className:"fn-service-side",children:(0,a.jsx)("div",{className:"fn-service-visual",children:(0,a.jsx)(i.default,{src:e.image,unoptimized:!0,alt:e.imageAlt,fill:!0,sizes:"(max-width: 900px) 100vw, 50vw",style:{objectFit:"cover"}})})})]},e.id))]})}),(0,a.jsx)("section",{className:"fn-section",id:"process","aria-labelledby":"process-heading",children:(0,a.jsxs)("div",{className:"fn-container",children:[(0,a.jsx)("p",{className:"fn-eyebrow",children:"How it works"}),(0,a.jsx)("h2",{className:"fn-h2",id:"process-heading",children:"From structured inquiry to clarity"}),(0,a.jsx)("p",{className:"fn-section-lead",children:"Every section form routes to the same operator inbox with full context — so the first conversation starts informed, not generic."}),(0,a.jsx)("div",{className:"fn-process-grid",children:u.map(e=>(0,a.jsxs)("div",{className:"fn-step",children:[(0,a.jsx)("p",{className:"fn-step-num",children:e.step}),(0,a.jsx)("h3",{children:e.title}),(0,a.jsx)("p",{children:e.body})]},e.step))})]})}),(0,a.jsx)("section",{className:"fn-section",id:"advisor","aria-labelledby":"advisor-heading",children:(0,a.jsxs)("div",{className:"fn-container",children:[(0,a.jsx)("p",{className:"fn-eyebrow",children:"Find an advisor"}),(0,a.jsx)("h2",{className:"fn-h2",id:"advisor-heading",children:"Want a licensed financial advisor instead?"}),(0,a.jsx)("p",{className:"fn-section-lead",children:"Tell us about your situation. We review your answers, contact you to confirm what you need, and match you with a licensed financial advisor who specializes in integrated wealth planning. You decide what happens next."}),(0,a.jsxs)("div",{className:"fn-process-grid",children:[(0,a.jsxs)("div",{className:"fn-step",children:[(0,a.jsx)("p",{className:"fn-step-num",children:"Step 1"}),(0,a.jsx)("h3",{children:"Answer a few questions"}),(0,a.jsx)("p",{children:"Four short steps. Ranges are fine for money questions."})]}),(0,a.jsxs)("div",{className:"fn-step",children:[(0,a.jsx)("p",{className:"fn-step-num",children:"Step 2"}),(0,a.jsx)("h3",{children:"We contact you"}),(0,a.jsx)("p",{children:"We review your answers and reach you by phone or email to confirm what you need."})]}),(0,a.jsxs)("div",{className:"fn-step",children:[(0,a.jsx)("p",{className:"fn-step-num",children:"Step 3"}),(0,a.jsx)("h3",{children:"We match you"}),(0,a.jsx)("p",{children:"You are matched with a licensed financial advisor who specializes in your area. Asking is not a commitment."})]})]}),(0,a.jsx)("p",{style:{marginTop:28},children:(0,a.jsx)(t.default,{href:r("/contact"),className:"fn-btn fn-btn-primary",children:"Get matched with an advisor"})})]})}),(0,a.jsx)("section",{className:"fn-section fn-section--alt",id:"c
21547ontact","aria-labelledby":"contact-heading",children:(0,a.jsxs)("div",{className:"fn-container",children:[(0,a.jsx)("p",{className:"fn-eyebrow",children:"Get started"}),(0,a.jsx)("h2",{className:"fn-h2",id:"contact-heading",children:"Business inquiry: tell us where you need leverage"}),(0,a.jsx)("p",{className:"fn-section-lead",children:"Not sure which track fits? Use this form — we will route you to the right specialist internally."}),(0,a.jsx)(m,{sectionId:"general",sectionTitle:"General B2B inquiry"})]})}),(0,a.jsx)("footer",{className:"fn-footer",role:"contentinfo",children:(0,a.jsxs)("div",{className:"fn-footer-inner",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"fn-footer-brand",children:"Fenul Analytics Solutions"}),(0,a.jsx)("p",{children:"Integrated wealth intelligence and AI systems for businesses and high-net-worth principals."}),(0,a.jsx)("p",{children:(0,a.jsx)(t.default,{href:r("/contact"),children:"Find an advisor →"})}),(0,a.jsxs)("nav",{className:"fn-footer-nav","aria-label":"Legal",children:[(0,a.jsx)(t.default,{href:r("/privacy"),children:"Privacy"}),(0,a.jsx)(t.default,{href:r("/terms"),children:"Terms"}),(0,a.jsx)(t.default,{href:r("/disclaimer"),children:"Disclaimer"}),(0,a.jsx)(t.default,{href:r("/editorial-policy"),children:"Editorial policy"}),(0,a.jsx)(t.default,{href:r("/do-not-sell"),children:"Do not sell or share"})]})]}),(0,a.jsx)("p",{className:"fn-disclaimer",children:"Educational and informational content only. Fenul does not provide personalized investment, tax, or legal advice through this site. No fiduciary or client relationship is formed by submitting a form or viewing this page. Calculator and model outputs are illustrative — not guarantees. Consult licensed professionals before making financial decisions."})]})})]})}],741833)},201635,e=>{"use strict";var a=e.i(843476),i=e.i(522016),t=e.i(846932),s=e.i(525320);let r={coastal:{headline:"Your California wealth deserves an integrated plan",body:"Between home equity, state taxes, and multi-account investment complexity, California professionals need more than a portfolio manager. They need someone who plans the whole picture.",features:["CA state tax optimization & timing","Home equity and retirement integration","Unified account coordination across all custodians","Scenario-modeled retirement date planning"]},analyst:{headline:"Capital-side clarity, now applied to your own balance sheet",body:"You model capital for companies. The same rigor applies to your personal balance sheet: portfolio construction, tax efficie
21547ncy, and estate architecture.",features:["Operator-grade personal portfolio construction","Tax drag modeling and harvesting strategy","Equity event planning (RSUs, options, secondary)","Deferred compensation timing analysis"]},"planner-ca":{headline:"A California wealth plan that works as a system",body:"Great financial planning is not a checklist. It connects your income plan, tax position, and estate goals into a single, actionable framework.",features:["Integrated retirement income modeling","CA community property and estate planning","Tax-advantaged account sequencing","Personalized financial roadmap for every life stage"]},aviation:{headline:"Aviation careers build real wealth. Protect and grow it intelligently",body:"Crew-specific income structures, per diem, and contract timing create unique wealth-building opportunities. A plan built by someone who knows aviation careers brings it together.",features:["Per diem strategy and crew tax optimization","Retirement bridging between FAA mandatory age and Social Security","Multi-custodian account unification","Disability and income protection planning"]},executive:{headline:"Executive wealth demands executive-grade coordination",body:"Equity compensation, deferred comp timing, and board governance considerations all interact. A single clear plan integrates every dimension.",features:["Equity compensation and vesting optimization","Deferred compensation election strategy","Concentrated stock reduction and diversification","Executive benefits and 10b5-1 planning"]},engineer:{headline:"Build your personal financial system with the precision you bring to work",body:"Engineers accumulate equity, options, and deferred comp from multiple sources. An assumption-transparent plan shows every input, output, and sensitivity.",features:["RSU and options tax modeling (ISO, NSO, ESPP)","Deferred comp and mega-backdoor Roth strategies","FIRE scenario modeling with sensitivity analysis","Multi-employer equity consolidation"]},counsel:{headline:"Your financial plan should be as rigorous as your legal work",body:"Law firm equity, student loan strategy, and practice economics need coordinated thinking, with the same precision you bring to client matters.",features:["Law firm equity and partner buyout modeling","Student loan repayment strategy (PSLF, refinancing)","Practice overhead and exit planning","Ethics-aware financial framework throughout"]},clinical:{headline:"A physician-aware wealth plan built on evidence, not guesswork",body:"Between loan strategy, a late career start, and high-income compression, physicians face wealth-building challenges that deserve clinical precision.",features:["Physician loan paydown vs. invest analysis","Late-stage retirement acceleration modeling","Practice acquisition and exit planning","Disability income and contract gap coverage"]},laboratory:{headline:"Method-transparent wealth planning for researchers and scientists",body:"Grant income, startup equity, academic retirement plans, and non-profit wealth all operate under different rules. Every assumption in your plan is documented.",features:["Grant income and non-profit 403(b) strategy","Startup equity and lab spinout modeling","PSLF and academic loan strategy","Assumption-documented scenario planning"]},default:{headline:"Integrated wealth planning for professionals who have built something worth protecting",body:"Investment strategy, tax architecture, estate design, and income planning work best as one plan, built by someone who does it for a living.",features:["Total wealth integration across all accounts","Tax-efficient retirement income modeling","Estate and legacy planning frameworks","Ongoing coordination and proactive reviews"]}},n={coastal:"coastal",analyst:"analyst","planner-ca":"planner-ca",aviation:"aviation",executive:"executive",engineer:"engineer",counsel:"counsel",clinical:"clinical",laboratory:"laboratory"},o=["Answer a few short questions. Ranges are fine for money.","We review your answers and contact you to confirm what you need.","We match you with a licensed financial advisor who specializes in {specialty}. You decide what happens next."];e.s(["AdvisorMatchSection",0,function({variant:e,domain:l,contactHref:c}){let d=r[n[e]??"default"],{specialty:h}=(0,s.advisorNiche)(l);return(0,a.jsx)("section",{className:"advisor-match-section","aria-label":"Get matched with a financial advisor",children:(0,a.jsx)("div",{className:"advisor-match-inner",children:(0,a.jsxs)(t.motion.div,{className:"advisor-match-grid",initial:{opacity:0,y:22},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-80px"},transition:{duration:.6,ease:[.16,1,.3,1]},children:[(0,a.jsxs)("div",{className:"advisor-match-copy",children:[(0,a.jsx)("p",{className:"advisor-match-badge",children:"Find an advisor"}),(0,a.jsx)("h2",{className:"advisor-match-headline",children:d.headline}),(0,a.jsx)("p",{className:"advisor-match-body",children:d.body}),(0,a.jsx)("p",{className:"advisor-match-list-h",children:"Areas advisors help with"}),(0,a.jsx)("ul",{className:"advisor-match-features",children:d.features.map(e=>(0,a.jsxs)("li",{className:"advisor-match-feature",children:[(0,a.jsx)("span",{className:"advisor-match-check","aria-hidden":!0,
21547children:"✓"}),(0,a.jsx)("span",{children:e})]},e))})]}),(0,a.jsxs)("div",{className:"advisor-match-panel",children:[(0,a.jsx)("h3",{className:"advisor-match-panel-h",children:"How it works"}),(0,a.jsx)("ol",{className:"advisor-match-steps",children:o.map(e=>(0,a.jsx)("li",{children:e.replace("{specialty}",h)},e))}),(0,a.jsxs)(i.default,{href:c,className:"advisor-match-cta shimmer-btn",children:["Get matched with an advisor",(0,a.jsx)("span",{"aria-hidden":!0,children:" →"})]}),(0,a.jsx)("p",{className:"advisor-match-note",children:"General education only. Asking to be matched creates no advisory relationship; the advisor gives you their own disclosures."})]})]})})})}])},940435,e=>{"use strict";var a=e.i(843476),i=e.i(271645),t=e.i(920206);let s=`<style>
21548/* ── Reset & base ── */
21549#mnd-wrap,#mnd-wrap *{box-sizing:border-box;margin:0;padding:0}
21550#mnd-wrap{
21551  font-family:system-ui,-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;
21552  background:#faf6ef;color:#2c1d14;line-height:1.6;overflow-x:hidden;
21553  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
21554  --bg:#faf6ef;--fg:#2c1d14;--accent:#c45c28;--accent-soft:#f5ddc8;
21555  --border:#e0c8a8;--muted:rgba(44,29,20,.56);--dim:rgba(44,29,20,.32);
21556  --surface:rgba(44,29,20,.03);--card:rgba(255,252,248,1);
21557  --radius:14px;--ease:cubic-bezier(.4,0,.2,1);
21558}
21559
21560/* ── Nav ── */
21561.mnd-nav{
21562  position:fixed;top:0;left:0;right:0;z-index:500;
21563  height:62px;padding:0 32px;
21564  display:flex;align-items:center;justify-content:space-between;
21565  background:rgba(250,246,239,.88);
21566  backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);
21567  border-bottom:1px solid var(--border);
21568  transition:background .35s,box-shadow .35s;
21569}
21570.mnd-nav-logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--fg);flex-shrink:0}
21571.mnd-logo-mark{
21572  width:30px;height:30px;border-radius:50%;
21573  background:var(--accent-soft);border:1.5px solid rgba(196,92,40,.4);
21574  display:flex;align-items:center;justify-content:center;
21575  font-size:.85rem;color:var(--accent);flex-shrink:0;
21576}
21577.mnd-logo-text{
21578  font-size:.9rem;font-weight:600;letter-spacing:.005em;
21579  font-family:Georgia,'Times New Roman',serif;font-style:italic;
21580  line-height:1.2;color:var(--fg);
21581}
21582.mnd-nav-links{display:flex;align-items:center;gap:2px}
21583.mnd-nav-links a{
21584  font-size:.81rem;font-weight:500;color:var(--muted);
21585  text-decoration:none;padding:6px 12px;border-radius:8px;
21586  transition:color .2s,background .2s;white-space:nowrap;
21587}
21588.mnd-nav-links a:hover{color:var(--fg);background:rgba(196,92,40,.08)}
21589.mnd-nav-actions{display:flex;align-items:center;gap:10px}
21590.mnd-btn-subscribe{
21591  display:inline-flex;align-items:center;gap:6px;
21592  padding:8px 20px;border-radius:100px;
21593  /* white text on --accent (#c45c28) is 4.24:1, below AA's 4.5:1 for this
21594     button's small (.78rem) text — dark text clears it (4.96:1) */
21595  background:var(--accent);color:#000;
21596  font-size:.78rem;font-weight:600;text-decoration:none;
21597  transition:opacity .2s,transform .15s;white-space:nowrap;
21598}
21599.mnd-btn-subscribe:hover{opacity:.88;transform:translateY(-1px)}
21600
21601/* ── Hero ── */
21602.mnd-hero{
21603  min-height:100vh;position:relative;
21604  display:flex;flex-direction:column;align-items:center;justify-content:center;
21605  text-align:center;padding:100px 24px 110px;
21606  overflow:hidden;background:#faf6ef;
21607}
21608.mnd-hero::before{
21609  content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
21610  background-image:radial-gradient(rgba(44,29,20,.04) 1px,transparent 1px);
21611  background-size:24px 24px;
21612  mask-image:radial-gradient(ellipse 85% 85% at 50% 50%,#000 18%,transparent 72%);
21613  -webkit-mask-image:radial-gradient(ellipse 85% 85% at 50% 50%,#000 18%,transparent 72%);
21614}
21615.mnd-hero-glow{
21616  position:absolute;top:50%;left:50%;
21617  transform:translate(-50%,-52%);
21618  width:800px;height:800px;
21619  background:radial-gradient(ellipse,rgba(196,92,40,.055) 0%,transparent 60%);
21620  pointer-events:none;z-index:0;
21621}
21622/* Floating photo panels */
21623.mnd-fi{
21624  position:absolute;pointer-events:none;z-index:2;
21625  border-radius:16px;overflow:hidden;
21626  box-shadow:0 8px 28px rgba(44,29,20,.16),0 2px 8px rgba(44,29,20,.1),0 0 0 1px rgba(224,200,168,.5);
21627}
21628.mnd-fi-inner{
21629  width:100%;height:100%;
21630  background-size:cover;background-position:center;
21631}
21632.mnd-fi-label{
21633  position:absolute;bottom:0;left:0;right:0;
21634  padding:10px 12px;
21635  background:linear-gradient(to top,rgba(44,29,20,.72) 0%,transparent 100%);
21636  font-size:.6rem;font-weight:600;letter-spacing:.07em;
21637  text-transform:uppercase;color:rgba(250,246,239,.88);
21638}
21639.mnd-fi-1{width:224px;height:148px;top:10%;left:2.5%;animation:mndFlt1 8.5s ease-in-out infinite}
21640.mnd-fi-2{width:192px;height:126px;bottom:18%;left:3.5%;animation:mndFlt2 11s ease-in-out infinite}
21641.mnd-fi-3{width:236px;height:156px;top:8%;right:2.5%;animation:mndFlt3 10s ease-in-out infinite}
21642.mnd-fi-4{width:204px;height:134px;bottom:20%;right:3%;animation:mndFlt1 12s ease-in-out infinite reverse}
21643@keyframes mndFlt1{0%,100%{transform:rotate(-3.5deg) translateY(0)}50%{transform:rotate(-3.5deg) translateY(-17px)}}
21644@keyframes mndFlt2{0%,100%{transform:rotate(3deg) translateY(0)}50%{transform:rotate(3deg) translateY(-21px)}}
21645@keyframes mndFlt3{0%,100%{transform:rotate(4.5deg) translateY(0)}50%{transform:rotate(4.5deg) translateY(-14px)}}
21646
21647.mnd-hero-vignette{
21648  position:absolute;inset:0;pointer-events:none;z-index:1;
21649  background:radial-gradient(ellipse 65% 60% at 50% 50%,transparent 0%,rgba(250,246,239,.48) 100%);
21650}
21651.mnd-hero-content{position:relative;z-index:3;max-width:740px}
21652.mnd-eyebrow-tag{
21653  display:inline-flex;align-items:center;gap:10px;
21654  font-size:.64rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;
21655  color:var(--accent);margin-bottom:24px;
21656}
21657.mnd-eyebrow-tag::before,.mnd-eyebrow-tag::after{
21658  content:'';display:block;width:18px;height:1px;background:var(--accent);opacity:.6;
21659}
21660.mnd-hero-h1{
21661  font-size:clamp(3.4rem,9vw,7.2rem);font-weight:700;
21662  letter-spacing:-.04em;line-height:.96;
21663  margin-bottom:26px;
21664  font-family:Georgia,'Times New Roman',serif;color:var(--fg);
21665}
21666.mnd-hero-h1 .line1{display:block}
21667.mnd-cycle-wrap{display:block;overflow:hidden;height:1.0em}
21668.mnd-cycle-inner{display:flex;flex-direction:column;animation:mndWordSlide 9s steps(1,end) infinite}
21669.mnd-cycle-inner span{display:block;height:1.0em;line-height:1.0;color:var(--accent);font-style:italic}
21670@keyframes mndWordSlide{
21671  0%,30%{transform:translateY(0)}
21672  33%,63%{transform:translateY(-1em)}
21673  66%,96%{transform:translateY(-2em)}
21674  100%{transform:translateY(0)}
21675}
21676.mnd-hero-sub{
21677  font-size:clamp(.98rem,1.8vw,1.1rem);color:var(--muted);
21678  max-width:500px;margin:0 auto 40px;line-height:1.84;
21679}
21680.mnd-hero-btns{display:flex;align-items:center;gap:12px;justify-content:center;flex-wrap:wrap}
21681.mnd-btn-primary{
21682  display:inline-flex;align-items:center;gap:7px;
21683  padding:13px 30px;border-radius:100px;
21684  background:var(--fg);color:#faf6ef;
21685  font-size:.88rem;font-weight:600;text-decoration:none;
21686  transition:opacity .2s,transform .18s var(--ease);
21687}
21688.mnd-btn-primary:hover{opacity:.87;transform:translateY(-2px)}
21689.mnd-btn-ghost{
21690  display:inline-flex;align-items:center;gap:7px;
21691  padding:13px 30px;border-radius:100px;
21692  border:1.5px solid var(--border);background:transparent;
21693  color:var(--muted);font-size:.88rem;font-weight:500;text-decoration:none;
21694  transition:border-color .2s,color .2s,background .2s;
21695}
21696.mnd-btn-ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(196,92,40,.06)}
21697
21698/* ── Divider ── */
21699.mnd-divider{
21700  height:1px;margin:0 32px;
21701  background:linear-gradient(to right,transparent,var(--border) 12%,var(--border) 88%,transparent);
21702}
21703
21704/* ── About ── */
21705.mnd-about{padding:104px 24px;background:#faf6ef}
21706.mnd-about-inner{
21707  max-width:1200px;margin:0 auto;
21708  display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center;
21709}
21710.mnd-sec-eyebrow{
21711  font-size:.62rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;
21712  color:var(--accent);margin-bottom:14px;
21713}
21714.mnd-about-h2{
21715  font-size:clamp(2.2rem,5.5vw,4rem);font-weight:700;
21716  letter-spacing:-.036em;line-height:1.04;
21717  font-family:Georgia,'Times New Roman',serif;color:var(--fg);margin-bottom:22px;
21718}
21719.mnd-about-h2 .italic{font-style:italic;color:var(--accent)}
21720.mnd-about-body{font-size:.95rem;color:var(--muted);line-height:1.88;margin-bottom:16px}
21721.mnd-about-link{
21722  display:inline-flex;align-items:center;gap:7px;
21723  color:var(--accent);font-size:.88rem;font-weight:600;text-decoration:none;
21724  border-bottom:1.5px solid rgba(196,92,40,.3);padding-bottom:2px;
21725  transition:border-color .2s,gap .2s;
21726}
21727.mnd-about-link:hover{border-color:var(--accent);gap:11px}
21728.mnd-stat-row{display:flex;gap:32px;margin-top:34px;padding-top:26px;border-top:1px solid var(--border)}
21729.mnd-stat-val{
21730  font-size:1.9rem;font-weight:700;color:var(--fg);
21731  font-family:Georgia,serif;letter-spacing:-.03em;line-height:1;margin-bottom:4px;
21732}
21733.mnd-stat-lbl{font-size:.72rem;color:var(--muted);letter-spacing:.02em}
21734/* Photo card */
21735.mnd-photo-card{
21736  border-radius:22px;overflow:hidden;
21737  box-shadow:0 24px 64px rgba(44,29,20,.14),0 6px 18px rgba(44,29,20,.09);
21738  border:1px solid var(--border);
21739  aspect-ratio:3/4;position:relative;
21740  background-size:cover;background-position:center;
21741}
21742.mnd-photo-card::after{
21743  content:'';position:absolute;inset:0;
21744  background:linear-gradient(to bottom,transparent 55%,rgba(44,29,20,.58) 100%);
21745}
21746.mnd-photo-caption{position:absolute;bottom:22px;left:22px;right:22px;z-index:1}
21747.mnd-photo-name{font-family:Georgia,serif;font-size:1.12rem;font-weight:700;font-style:italic;color:#fff;margin-bottom:5px}
21748.mnd-photo-tag{font-size:.62rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:rgba(250,246,239,.65)}
21749
21750/* ── Destinations ── */
21751.mnd-dest{padding:104px 24px;background:#faf6ef}
21752.mnd-dest-inner{max-width:1280px;margin:0 auto}
21753.mnd-dest-hdr{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:44px;gap:24px;flex-wrap:wrap}
21754.mnd-sec-h2{
21755  font-size:clamp(2rem,4.8vw,3.5rem);font-weight:700;letter-spacing:-.034em;
21756  line-height:1.06;font-family:Georgia,'Times New Roman',serif;color:var(--fg);margin-bottom:10px;
21757}
21758.mnd-sec-lead{font-size:.96rem;color:var(--muted);line-height:1.8;max-width:500px}
21759.mnd-view-all{
21760  font-size:.82rem;font-weight:600;color:var(--accent);
21761  text-decoration:none;display:flex;align-items:center;gap:5px;transition:gap .2s;
21762  white-space:nowrap;flex-shrink:0;align-self:flex-end;padding-bottom:4px;
21763}
21764.mnd-view-all:hover{gap:9px}
21765.mnd-dest-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
21766.mnd-dest-card{
21767  position:relative;border-radius:18px;overflow:hidden;
21768  aspect-ratio:3/4;cursor:pointer;text-decoration:none;color:#fff;display:block;
21769  border:1px solid rgba(224,200,168,.3);
21770  box-shadow:0 4px 14px rgba(44,29,20,.08);
21771  transition:transform .4s var(--ease),box-shadow .4s var(--ease);
21772}
21773.mnd-dest-card:hover{transform:translateY(-6px) scale(1.015);box-shadow:0 18px 52px rgba(44,29,20,.2)}
21774.mnd-dest-bg{position:absolute;inset:0;background-size:cover;background-position:center;transition:transform .55s var(--ease)}
21775.mnd-dest-card:hover .mnd-dest-bg{transform:scale(1.07)}
21776.mnd-dest-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,transparent 28%,rgba(44,29,20,.78) 100%)}
21777.mnd-dest-body{position:absolute;bottom:0;left:0;right:0;padding:18px}
21778.mnd-dest-icon{font-size:1.5rem;margin-bottom:7px;display:block}
21779.mnd-dest-name{font-family:Georgia,serif;font-size:1rem;font-weight:700;line-height:1.2;margin-bottom:4px}
21780.mnd-dest-count{font-size:.62rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;opacity:.6}
21781
21782/* ── Posts ── */
21783.mnd-posts{padding:104px 24px;background:#faf6ef}
21784.mnd-posts-inner{max-width:1280px;margin:0 auto}
21785.mnd-posts-hdr{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:44px;gap:24px;flex-wrap:wrap}
21786/* Featured row: big left + 2 stacked right */
21787.mnd-posts-top{display:grid;grid-template-columns:1.38fr 1fr;gap:12px;margin-bottom:12px}
21788.mnd-post-card{
21789  position:relative;border-radius:18px;overflow:hidden;
21790  cursor:pointer;text-decoration:none;color:var(--fg);display:block;
21791  background:var(--card);border:1px solid var(--border);
21792  box-shadow:0 2px 10px rgba(44,29,20,.06);
21793  transition:transform .35s var(--ease),box-shadow .35s var(--ease);
21794}
21795.mnd-post-card:hover{transform:translateY(-4px);box-shadow:0 14px 40px rgba(44,29,20,.12)}
21796.mnd-post-img{
21797  width:100%;background-size:cover;background-position:center;
21798  transition:transform .5s var(--ease);
21799}
21800.mnd-post-card:hover .mnd-post-img{transform:scale(1.03)}
21801.mnd-post-card.featured .mnd-post-img{aspect-ratio:16/10}
21802.mnd-post-card.small .mnd-post-img{aspect-ratio:16/9}
21803.mnd-post-card-3col .mnd-post-img{aspect-ratio:16/9}
21804.mnd-post-body{padding:20px 22px 22px}
21805.mnd-post-tag{
21806  display:inline-block;padding:3px 10px;border-radius:100px;
21807  background:var(--accent-soft);color:var(--accent);
21808  font-size:.6rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
21809  margin-bottom:10px;
21810}
21811.mnd-post-title{
21812  font-family:Georgia,serif;font-weight:700;
21813  line-height:1.33;color:var(--fg);margin-bottom:8px;letter-spacing:-.01em;
21814}
21815.mnd-post-card.featured .mnd-post-title{font-size:1.28rem}
21816.mnd-post-card.small .mnd-post-title{font-size:.92rem}
21817.mnd-post-card-3col .mnd-post-title{font-size:1rem}
21818.mnd-post-excerpt{font-size:.8rem;color:var(--muted);line-height:1.72;margin-bottom:14px}
21819.mnd-post-meta{display:flex;align-items:center;gap:8px;font-size:.68rem;color:var(--dim)}
21820.mnd-post-meta-dot{width:3px;height:3px;border-radius:50%;background:var(--dim);flex-shrink:0}
21821/* Side 2 posts stacked */
21822.mnd-posts-side{display:flex;flex-direction:column;gap:12px}
21823/* 3-col grid */
21824.mnd-posts-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
21825
21826/* ── Resources ── */
21827.mnd-resources{padding:104px 24px;background:var(--accent-soft)}
21828.mnd-res-inner{max-width:1200px;margin:0 auto}
21829.mnd-res-hdr{max-width:560px;margin:0 auto 60px;text-align:center}
21830.mnd-res-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
21831.mnd-res-card{
21832  background:#fff;border-radius:18px;padding:28px 24px 32px;
21833  border:1px solid rgba(224,200,168,.55);
21834  box-shadow:0 2px 12px rgba(44,29,20,.05);
21835  text-decoration:none;color:var(--fg);
21836  display:flex;flex-direction:column;gap:12px;
21837  transition:transform .3s var(--ease),box-shadow .3s;
21838}
21839.mnd-res-card:hover{transform:translateY(-5px);box-shadow:0 14px 40px rgba(44,29,20,.1)}
21840.mnd-res-icon{font-size:2.2rem;line-height:1}
21841.mnd-res-title{font-family:Georgia,serif;font-size:1.06rem;font-weight:700;letter-spacing:-.015em;color:var(--fg)}
21842.mnd-res-desc{font-size:.8rem;color:var(--muted);line-height:1.74;flex:1}
21843.mnd-res-cta{font-size:.78rem;color:var(--accent);font-weight:600;display:flex;align-items:center;gap:5px;transition:gap .2s}
21844.mnd-res-card:hover .mnd-res-cta{gap:9px}
21845
21846/* ── Newsletter ── */
21847.mnd-nl{padding:120px 24px;background:#faf6ef;position:relative;overflow:hidden}
21848.mnd-nl::before{
21849  content:'';position:absolute;inset:0;pointer-events:none;
21850  background-image:radial-gradient(rgba(44,29,20,.03) 1px,transparent 1px);
21851  background-size:22px 22px;
21852}
21853.mnd-nl-inner{max-width:580px;margin:0 auto;text-align:center;position:relative;z-index:1}
21854.mnd-nl-icon{font-size:2.6rem;margin-bottom:20px;display:block}
21855.mnd-nl-h2{
21856  font-family:Georgia,serif;font-size:clamp(2.2rem,4.5vw,3.2rem);
21857  font-weight:700;letter-spacing:-.034em;line-height:1.08;
21858  color:var(--fg);margin-bottom:18px;
21859}
21860.mnd-nl-sub{
21861  font-size:.96rem;color:var(--muted);line-height:1.84;
21862  margin-bottom:38px;
21863}
21864.mnd-nl-form{display:flex;gap:10px;max-width:420px;margin:0 auto;flex-wrap:wrap;justify-content:center}
21865.mnd-nl-input{
21866  flex:1;
21866min-width:200px;padding:13px 20px;
21867  border:1.5px solid var(--border);border-radius:100px;
21868  background:#fff;color:var(--fg);font-size:.88rem;
21869  outline:none;transition:border-color .2s;
21870}
21871.mnd-nl-input:focus{border-color:var(--accent)}
21872.mnd-nl-input::placeholder{color:var(--dim)}
21873.mnd-nl-btn{
21874  padding:13px 26px;border-radius:100px;
21875  background:var(--accent);color:#fff;
21876  font-size:.88rem;font-weight:600;border:none;
21877  cursor:pointer;white-space:nowrap;
21878  transition:opacity .2s,transform .15s;
21879}
21880.mnd-nl-btn:hover{opacity:.88;transform:translateY(-1px)}
21881.mnd-nl-note{font-size:.68rem;color:var(--dim);margin-top:14px}
21882
21883/* ── Footer ── */
21884.mnd-footer{background:var(--fg);padding:0 32px 56px}
21885.mnd-footer-divider{
21886  height:1px;margin-bottom:60px;
21887  background:linear-gradient(to right,transparent 0%,rgba(250,246,239,.1) 18%,rgba(250,246,239,.1) 82%,transparent 100%);
21888}
21889.mnd-footer-inner{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:1.8fr 1fr 1fr 1fr;gap:44px}
21890.mnd-footer-logo{display:flex;align-items:center;gap:10px;text-decoration:none;margin-bottom:16px}
21891.mnd-f-logo-mark{
21892  width:30px;height:30px;border-radius:50%;
21893  background:rgba(196,92,40,.22);border:1.5px solid rgba(196,92,40,.35);
21894  display:flex;align-items:center;justify-content:center;
21895  font-size:.85rem;color:#f5ddc8;flex-shrink:0;
21896}
21897.mnd-f-logo-text{font-size:.9rem;font-weight:600;font-family:Georgia,serif;font-style:italic;color:#faf6ef}
21898/* Footer text sits on --fg (#2c1d14, near-black) — these rest-state
21899   opacities (.22-.48) blended to 2.9-3.7:1, below AA's 4.5:1 for text this
21900   small. .62 clears it with margin (~6:1) for all of them; :hover states
21901   were already high-opacity and already passed. */
21902.mnd-footer-tagline{font-size:.76rem;color:rgba(250,246,239,.62);line-height:1.78;margin-bottom:22px;max-width:240px}
21903.mnd-footer-socials{display:flex;gap:10px}
21904.mnd-footer-socials a{
21905  display:flex;align-items:center;justify-content:center;
21906  width:32px;height:32px;border-radius:8px;
21907  border:1px solid rgba(250,246,239,.1);color:rgba(250,246,239,.62);
21908  text-decoration:none;font-size:.76rem;transition:border-color .2s,color .2s;
21909}
21910.mnd-footer-socials a:hover{border-color:rgba(250,246,239,.32);color:rgba(250,246,239,.82)}
21911.mnd-footer-col-title{font-size:.7rem;font-weight:600;color:rgba(250,246,239,.62);margin-bottom:20px;letter-spacing:.14em;text-transform:uppercase}
21912.mnd-footer-links{display:flex;flex-direction:column;gap:13px}
21913.mnd-footer-links a{font-size:.8rem;color:rgba(250,246,239,.62);text-decoration:none;transition:color .2s}
21914.mnd-footer-links a:hover{color:rgba(250,246,239,.78)}
21915.mnd-footer-bottom{
21916  max-width:1200px;margin:56px auto 0;padding-top:24px;
21917  border-top:1px solid rgba(250,246,239,.07);
21918  display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;
21919  font-size:.7rem;color:rgba(250,246,239,.62);
21920}
21921.mnd-footer-bottom a{color:rgba(250,246,239,.62);text-decoration:none;transition:color .2s}
21922.mnd-footer-bottom a:hover{color:rgba(250,246,239,.55)}
21923.mnd-footer-bottom-links{display:flex;gap:20px}
21924
21925/* ── Scroll reveal ── */
21926.mnd-reveal{opacity:0;transform:translateY(22px);transition:opacity .78s var(--ease),transform .78s var(--ease)}
21927.mnd-reveal.visible{opacity:1;transform:none}
21928.mnd-reveal:nth-child(2){transition-delay:.09s}
21929.mnd-reveal:nth-child(3){transition-delay:.18s}
21930.mnd-reveal:nth-child(4){transition-delay:.27s}
21931.mnd-reveal:nth-child(5){transition-delay:.36s}
21932
21933/* ── Responsive ── */
21934@media(max-width:1080px){
21935  .mnd-dest-grid{grid-template-columns:repeat(3,1fr)}
21936  .mnd-res-grid{grid-template-columns:repeat(2,1fr)}
21937  .mnd-footer-inner{grid-template-columns:1fr 1fr}
21938}
21939@media(max-width:820px){
21940  .mnd-nav-links{display:none}
21941  .mnd-fi-1,.mnd-fi-2,.mnd-fi-3,.mnd-fi-4{display:none}
21942  .mnd-about-inner{grid-template-columns:1fr;gap:40px}
21943  .mnd-about-photo{order:-1}
21944  .mnd-photo-card{aspect-ratio:4/3;max-height:340px}
21945  .mnd-dest-grid{grid-template-columns:repeat(2,1fr)}
21946  .mnd-posts-top{grid-template-columns:1fr}
21947  .mnd-posts-grid{grid-template-columns:1fr 1fr}
21948}
21949@media(max-width:540px){
21950  .mnd-dest-grid{grid-template-columns:repeat(2,1fr)}
21951  .mnd-posts-grid{grid-template-columns:1fr}
21952  .mnd-res-grid{grid-template-columns:1fr}
21953  .mnd-footer-inner{grid-template-columns:1fr;gap:28px}
21954  .mnd-nl-form{flex-direction:column;align-items:stretch}
21955  .mnd-nl-input{min-width:unset}
21956}
21957
21958.mnd-skip-link{position:fixed;left:1rem;top:1rem;z-index:200;transform:translateY(-6rem);
21959  transition:transform .15s ease;background:#1a1a1a;color:#fff;padding:.6rem 1rem;
21960  border-radius:.5rem;font-size:.875rem;font-weight:600;text-decoration:none}
21961.mnd-skip-link:focus{transform:translateY(0);outline:2px solid #fff;outline-offset:2px}
21962</style>
21963
21964<div id="mnd-wrap">
21965
21966<a href="#main-content" class="mnd-skip-link">Skip to main content</a>
21967
21968<nav class="mnd-nav" id="mnd-nav">
21969  <a href="/" class="mnd-nav-logo">
21970    <div class="mnd-logo-mark">✦</div>
21971    <span class="mnd-logo-text">Minoo Life Diary</span>
21972  </a>
21973  <div class="mnd-nav-links">
21974    <a href="/destinations">Destinations</a>
21975    <a href="/travel-tips">Travel Tips</a>
21976    <a href="/solo-travel">Solo Travel</a>
21977    <a href="/about">About</a>
21978    <a href="/blog">Blog</a>
21979  </div>
21980  <div class="mnd-nav-actions">
21981    <a href="/newsletter" class="mnd-btn-subscribe">Subscribe ✉</a>
21982  </div>
21983</nav>
21984
21985<span id="main-content" tabindex="-1"></span>
21986
21987<section class="mnd-hero">
21988  <div class="mnd-hero-glow"></div>
21989
21990  <div class="mnd-fi mnd-fi-1">
21991    <div class="mnd-fi-inner" style="background-image:url('https://media.minoolifediary.com/minoolifediary/hero.webp'),linear-gradient(145deg,#c9935a 0%,#8a5a2a 60%,#5a3010 100%)"></div>
21992    <div class="mnd-fi-label">Rome, Italy</div>
21993  </div>
21994  <div class="mnd-fi mnd-fi-2">
21995    <div class="mnd-fi-inner" style="background-image:linear-gradient(145deg,#c9935a 0%,#9a6a40 60%,#6a3a18 100%)"></div>
21996    <div class="mnd-fi-label">Florence, Italy</div>
21997  </div>
21998  <div class="mnd-fi mnd-fi-3">
21999    <div class="mnd-fi-inner" style="background-image:linear-gradient(145deg,#8090b0 0%,#506080 60%,#304060 100%)"></div>
22000    <div class="mnd-fi-label">London, UK</div>
22001  </div>
22002  <div class="mnd-fi mnd-fi-4">
22003    <div class="mnd-fi-inner" style="background-image:linear-gradient(145deg,#70a060 0%,#507040 60%,#305020 100%)"></div>
22004    <div class="mnd-fi-label">Florida, USA</div>
22005  </div>
22006
22007  <div class="mnd-hero-vignette"></div>
22008  <div class="mnd-hero-content">
22009    <div class="mnd-eyebrow-tag">A personal travel diary</div>
22010    <h1 class="mnd-hero-h1">
22011      <span class="line1">A diary of</span>
22012      <span class="mnd-cycle-wrap">
22013        <span class="mnd-cycle-inner">
22014          <span>wandering.</span>
22015          <span>discovery.</span>
22016          <span>belonging.</span>
22017        </span>
22018      </span>
22019    </h1>
22020    <p class="mnd-hero-sub">A Persian girl who traded her comfort zone for a passport full of stamps — sharing honest travel stories, destination guides, and the kind of tips you only learn the hard way.</p>
22021    <div class="mnd-hero-btns">
22022      <a href="/blog" class="mnd-btn-primary">Read my stories &#8594;</a>
22023      <a href="/destinations" class="mnd-btn-ghost">Explore destinations</a>
22024    </div>
22025  </div>
22026</section>
22027
22028<div class="mnd-divider"></div>
22029
22030<section class="mnd-about">
22031  <div class="mnd-about-inner">
22032    <div class="mnd-reveal">
22033      <div class="mnd-sec-eyebrow">
22033About me</div>
22034      <h2 class="mnd-about-h2">Hey, I&rsquo;m<br><span class="italic">Minoo.</span></h2>
22035      <p class="mnd-about-body">Born and raised in Tehran, I never imagined that one solo trip to Istanbul would completely rewrite the story of my life. That was four years ago. Since then, I&rsquo;ve explored 35+ countries &mdash; from the narrow alleys of Kyoto to the cliff&shy;side villages of Portugal &mdash; always with a notebook and an open heart.</p>
22036      <p class="mnd-about-body">This blog is my diary. The unfiltered truth of travel: the moments of awe, the planning mistakes, the unexpected friendships, and all the ways the world keeps surprising me. I&rsquo;m here to show you that the world is far more welcoming than the headlines make it seem.</p>
22037      <a href="/about" class="mnd-about-link">Read my full story &#8594;</a>
22038      <div class="mnd-stat-row">
22039        <div class="mnd-stat">
22040          <div class="mnd-stat-val">35+</div>
22041          <div class="mnd-stat-lbl">Countries visited</div>
22042        </div>
22043        <div class="mnd-stat">
22044          <div class="mnd-stat-val">4 yrs</div>
22045          <div class="mnd-stat-lbl">On the road</div>
22046        </div>
22047        <div class="mnd-stat">
22048          <div class="mnd-stat-val">4</div>
22049          <div class="mnd-stat-lbl">Continents explored</div>
22050        </div>
22051      </div>
22052    </div>
22053    <div class="mnd-about-photo mnd-reveal">
22054      <div class="mnd-photo-card" style="background-image:linear-gradient(160deg,#d4a87a 0%,#b87a4a 40%,#8a4a20 100%)">
22055        <div class="mnd-photo-caption">
22056          <div class="mnd-photo-name">Minoo</div>
22057          <div class="mnd-photo-tag">Tehran &rarr; Everywhere</div>
22058        </div>
22059      </div>
22060    </div>
22061  </div>
22062</section>
22063
22064<div class="mnd-divider"></div>
22065
22066<section class="mnd-dest">
22067  <div class="mnd-dest-inner">
22068    <div class="mnd-dest-hdr">
22069      <div class="mnd-reveal">
22070        <div class="mnd-sec-eyebrow">Explore the world</div>
22071        <h2 class="mnd-sec-h2">Where to next?</h2>
22072      </div>
22073      <a href="/destinations" class="mnd-view-all mnd-reveal">View all destinations &#8594;</a>
22074    </div>
22075    <div class="mnd-dest-grid">
22076      <a href="/destinations/europe" class="mnd-dest-card mnd-reveal">
22077        <div class="mnd-dest-bg" style="background-image:linear-gradient(145deg,#c9a07a 0%,#9a6a40 50%,#6a3a18 100%)"></div>
22078        <div class="mnd-dest-overlay"></div>
22079        <div class="mnd-dest-body">
22080          <span class="mnd-dest-icon">&#127984;</span>
22081          <div class="mnd-dest-name">Europe</div>
22082          <div class="mnd-dest-count">4 articles</div>
22083        </div>
22084      </a>
22085      <a href="/destinations/middle-east" class="mnd-dest-card mnd-reveal">
22086        <div class="mnd-dest-bg" style="background-image:url('https://media.minoolifediary.com/minoolifediary/destination_mediterranean.webp'),linear-gradient(145deg,#d4b060 0%,#a07828 50%,#6a4808 100%)"></div>
22087        <div class="mnd-dest-overlay"></div>
22088        <div class="mnd-dest-body">
22089          <span class="mnd-dest-icon">&#128332;</span>
22090          <div class="mnd-dest-name">Middle East</div>
22091          <div class="mnd-dest-count">Regional guide</div>
22092        </div>
22093      </a>
22094      <a href="/destinations/asia" class="mnd-dest-card mnd-reveal">
22095        <div class="mnd-dest-bg" style="background-image:url('https://media.minoolifediary.com/minoolifediary/destination_asia.webp'),linear-gradient(145deg,#a0b888 0%,#708858 50%,#485830 100%)"></div>
22096        <div class="mnd-dest-overlay"></div>
22097        <div class="mnd-dest-body">
22098          <span class="mnd-dest-icon">&#9961;</span>
22099          <div class="mnd-dest-name">Asia</div>
22100          <div class="mnd-dest-count">Regional guide</div>
22101        </div>
22102      </a>
22103      <a href="/destinations/americas" class="mnd-dest-card mnd-reveal">
22104        <div class="mnd-dest-bg" style="background-image:linear-gradient(145deg,#70a060 0%,#507040 50%,#305020 100%)"></div>
22105        <div class="mnd-dest-overlay"></div>
22106        <div class="mnd-dest-body">
22107          <span class="mnd-dest-icon">&#127758;
22107</span>
22108          <div class="mnd-dest-name">Americas</div>
22109          <div class="mnd-dest-count">2 articles</div>
22110        </div>
22111      </a>
22112      <a href="/destinations/africa" class="mnd-dest-card mnd-reveal">
22113        <div class="mnd-dest-bg" style="background-image:url('https://media.minoolifediary.com/minoolifediary/destination_africa.webp'),linear-gradient(145deg,#c8a860 0%,#9a7830 50%,#6a4808 100%)"></div>
22114        <div class="mnd-dest-overlay"></div>
22115        <div class="mnd-dest-body">
22116          <span class="mnd-dest-icon">&#129409;</span>
22117          <div class="mnd-dest-name">Africa</div>
22118          <div class="mnd-dest-count">Regional guide</div>
22119        </div>
22120      </a>
22121    </div>
22122  </div>
22123</section>
22124
22125<div class="mnd-divider"></div>
22126
22127<section class="mnd-posts">
22128  <div class="mnd-posts-inner">
22129    <div class="mnd-posts-hdr">
22130      <div class="mnd-reveal">
22131        <div class="mnd-sec-eyebrow">From the diary</div>
22132        <h2 class="mnd-sec-h2">Latest stories</h2>
22133      </div>
22134      <a href="/blog" class="mnd-view-all mnd-reveal">All stories &#8594;</a>
22135    </div>
22136
22137    <div class="mnd-posts-top mnd-reveal">
22138      <a href="/blog/5-things-you-have-to-do-in-florence" class="mnd-post-card featured">
22139        <div class="mnd-post-img" style="background-image:linear-gradient(145deg,#c9935a 0%,#8a5a2a 60%,#5a3010 100%)"></div>
22140        <div class="mnd-post-body">
22141          <span class="mnd-post-tag">Europe &middot; Italy</span>
22142          <div class="mnd-post-title">5 Things You Have to Do in Florence</div>
22143          <p class="mnd-post-excerpt">Florence is a city that rewards those who wander. From the Uffizi Gallery to the hidden trattorias tucked behind the Duomo, here are the five experiences you absolutely cannot miss on your visit to the Cradle of the Renaissance.</p>
22144          <div class="mnd-post-meta">
22145            <span>Nov 14, 2018</span>
22146            <span class="mnd-post-meta-dot"></span>
22147            <span>6 min read</span>
22148          </div>
22149        </div>
22150      </a>
22151      <div class="mnd-posts-side">
22152        <a href="/blog/rome-city-of-fountains-day-1" class="mnd-post-card small">
22153          <div class="mnd-post-img" style="background-image:linear-gradient(145deg,#c9935a 0%,#8a5a2a 60%,#5a3010 100%)"></div>
22154          <div class="mnd-post-body">
22155            <span class="mnd-post-tag">Europe &middot; Italy</span>
22156            <div class="mnd-post-title">Rome City of Fountains, Day 1</div>
22157            <div class="mnd-post-meta">
22158              <span>Nov 14, 2018</span>
22159              <span class="mnd-post-meta-dot"></span>
22160              <span>5 min read</span>
22161            </div>
22162          </div>
22163        </a>
22164        <a href="/blog/rome-an-open-air-museum-day-2" class="mnd-post-card small">
22165          <div class="mnd-post-img" style="background-image:linear-gradient(145deg,#c9a07a 0%,#9a6a40 60%,#6a3a18 100%)"></div>
22166          <div class="mnd-post-body">
22167            <span class="mnd-post-tag">Europe &middot; Italy</span>
22168            <div class="mnd-post-title">Rome an Open-air Museum, Day 2</div>
22169            <div class="mnd-post-meta">
22170              <span>Nov 14, 2018</span>
22171              <span class="mnd-post-meta-dot"></span>
22172              <span>5 min read</span>
22173            </div>
22174          </div>
22175        </a>
22176      </div>
22177    </div>
22178
22179    <div class="mnd-posts-grid">
22180      <a href="/blog/london-in-christmas" class="mnd-post-card mnd-post-card-3col mnd-reveal">
22181        <div class="mnd-post-img" style="background-image:linear-gradient(145deg,#8090b0 0%,#506080 60%,#304060 100%)"></div>
22182        <div class="mnd-post-body">
22183          <span class="mnd-post-tag">Europe &middot; UK</span>
22184          <div class="mnd-post-title">London in Christmas</div>
22185          <div class="mnd-post-meta">
22186            <span>Nov 14, 2018</span>
22187            <span class="mnd-post-meta-dot"></span>
22188            <span>5 min read</span>
22189          </div>
22190        </div>
22191      </a>
22192      <a href="/blog/florida-everglade" class="mnd-post-card mnd-post-card-3col mnd-reveal">
22193        <div class="mnd-post-img" style="background-image:linear-gradient(145deg,#70a060 0%,#507040 60%,#305020 100%)"></div>
22194        <div class="mnd-post-body">
22195          <span class="mnd-post-tag">Americas &middot; USA</span>
22196          <div class="mnd-post-title">Everglades Holiday Park</div>
22197          <div class="mnd-post-meta">
22198            <span>Apr 1, 2018</span>
22199            <span class="mnd-post-meta-dot"></span>
22200            <span>4 min read</span>
22201          </div>
22202        </div>
22203      </a>
22204      <a href="/blog/new-york-in-fall" class="mnd-post-card mnd-post-card-3col mnd-reveal">
22205        <div class="mnd-post-img" style="background-image:linear-gradient(145deg,#b8a890 0%,#887060 60%,#604838 100%)"></div>
22206        <div class="mnd-post-body">
22207          <span class="mnd-post-tag">Americas &middot; USA</span>
22208          <div class="mnd-post-title">New York in Fall</div>
22209          <div class="mnd-post-meta">
22210            <span>Nov 14, 2018</span>
22211            <span class="mnd-post-meta-dot"></span>
22212            <span>5 min read</span>
22213          </div>
22214        </div>
22215      </a>
22216    </div>
22217  </div>
22218</section>
22219
22220<div class="mnd-divider"></div>
22221
22222<section class="mnd-resources">
22223  <div class="mnd-res-inner">
22224    <div class="mnd-res-hdr mnd-reveal">
22225      <div class="mnd-sec-eyebrow">Resources</div>
22226      <h2 class="mnd-sec-h2" style="text-align:center">Travel smarter,<br>not harder.</h2>
22227      <p class="mnd-sec-lead" style="margin:0 auto;text-align:center">Everything I&rsquo;ve learned across 35+ countries &mdash; packed into guides you can actually use.</p>
22228    </div>
22229    <div class="mnd-res-grid">
22230      <a href="/travel-tips/guides" class="mnd-res-card mnd-reveal">
22231        <div class="mnd-res-icon">&#128506;</div>
22232        <div class="mnd-res-title">Destination Guides</div>
22233        <p class="mnd-res-desc">Detailed, honest guides with real itineraries, local tips, and my personal Google Maps saved locations.</p>
22234        <span class="mnd-res-cta">Browse guides &#8594;</span>
22235      </a>
22236      <a href="/solo-travel" class="mnd-res-card mnd-reveal">
22237        <div class="mnd-res-icon">&#129517;</div>
22238        <div class="mnd-res-title">Solo Travel</div>
22239        <p class="mnd-res-desc">Everything you need to travel solo safely and confidently &mdash; especially as a woman exploring new cultures.</p>
22240        <span class="mnd-res-cta">Solo travel tips &#8594;</span>
22241      </a>
22242      <a href="/budget-travel" class="mnd-res-card mnd-reveal">
22243        <div class="mnd-res-icon">&#128176;</div>
22244        <div class="mnd-res-title">Budget Travel</div>
22245        <p class="mnd-res-desc">How to travel more without spending more. Cheap flights, free stays, and real money-saving hacks.</p>
22246        <span class="mnd-res-cta">Save money &#8594;</span>
22247      </a>
22248      <a href="/packing" class="mnd-res-card mnd-reveal">
22249        <div class="mnd-res-icon">&#127890;</div>
22250        <div class="mnd-res-title">Packing Lists</div>
22251        <p class="mnd-res-desc">My tested packing essentials for every climate, trip length, and travel style &mdash; 4 years in the making.</p>
22252        <span class="mnd-res-cta">Get packing lists &#8594;</span>
22253      </a>
22254    </div>
22255  </div>
22256</section>
22257
22258<div class="mnd-divider"></div>
22259
22260<section class="mnd-nl">
22261  <div class="mnd-nl-inner mnd-reveal">
22262    <span class="mnd-nl-icon">&#9993;&#65039;</span>
22263    <h2 class="mnd-nl-h2">Let&rsquo;s be pen pals.</h2>
22264    <p class="mnd-nl-sub">Join my growing list of fellow wanderers who get honest travel stories, destination guides, and tips delivered to their inbox. No spam &mdash; only good stuff, I promise.</p>
22265    <div class="mnd-nl-form">
22266      <input type="email" class="mnd-nl-input" placeholder="[email protected]" aria-label="Email address">
22267      <button class="mnd-nl-btn" type="button">Subscribe</button>
22268    </div>
22269    <p class="mnd-nl-note">Unsubscribe anytime. I respect your inbox.</p>
22270  </div>
22271</section>
22272
22273<footer class="mnd-footer">
22274  <div class="mnd-footer-divider"></div>
22275  <div class="mnd-footer-inner">
22276    <div>
22277      <a href="/" class="mnd-footer-logo">
22278        <div class="mnd-f-logo-mark">&#10022;</div>
22279        <span class="mnd-f-logo-text">Minoo Life Diary</span>
22280      </a>
22281      <p class="mnd-footer-tagline">A Persian girl&rsquo;s honest diary of the world &mdash; stories, guides, and the kind of travel tips that actually work.</p>
22282      <div class="mnd-footer-socials">
22283        <a href="#" title="Instagram">IG</a>
22284        <a href="#" title="Pinterest">PT</a>
22285        <a href="#" title="YouTube">YT</a>
22286        <a href="#" title="TikTok">TK</a>
22287      </div>
22288    </div>
22289    <div>
22290      <div class="mnd-footer-col-title">Explore</div>
22291      <div class="mnd-footer-links">
22292        <a href="/destinations">All Destinations</a>
22293        <a href="/destinations/europe">Europe</a>
22294        <a href="/destinations/middle-east">Middle East</a>
22295        <a href="/destinations/asia">Asia</a>
22296        <a href="/destinations/americas">Americas</a>
22297      </div>
22298    </div>
22299    <div>
22300      <div class="mnd-footer-col-title">Resources</div>
22301      <div class="mnd-footer-links">
22302        <a href="/travel-tips">Travel Tips</a>
22303        <a href="/solo-travel">Solo Travel</a>
22304        <a href="/budget-travel">Budget Travel</a>
22305        <a href="/packing">Packing Lists</a>
22306        <a href="/blog">All Stories</a>
22307      </div>
22308    </div>
22309    <div>
22310      <div class="mnd-footer-col-title">About</div>
22311      <div class="mnd-footer-links">
22312        <a href="/about">About Minoo</a>
22313        <a href="/newsletter">Newsletter</a>
22314        <a href="/contact">Contact</a>
22315        <a href="/work-with-me">Work With Me</a>
22316        <a href="/privacy">Privacy Policy</a>
22317      </div>
22318    </div>
22319  </div>
22320  <div class="mnd-footer-bottom">
22321    <span>&copy; 2026 Minoo Life Diary. All rights reserved.</span>
22322    <div class="mnd-footer-bottom-links">
22323      <a href="/privacy">Privacy</a>
22324      <a href="/terms">Terms</a>
22325      <a href="/destinations">Destinations</a>
22326    </div>
22327  </div>
22328</footer>
22329
22330</div>`;e.s(["MinoolifediaryComPage",0,function(){let e=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let a=e.current;if(!a)return;let i=new IntersectionObserver(e=>
22330e.forEach(e=>{e.isIntersecting&&(e.target.classList.add("visible"),i.unobserve(e.target))}),{threshold:.06});a.querySelectorAll(".mnd-reveal").forEach(e=>i.observe(e));let t=a.querySelector("#mnd-nav"),s=()=>{if(!t)return;let e=window.scrollY>50;t.style.background=e?"rgba(250,246,239,.97)":"rgba(250,246,239,.88)",t.style.boxShadow=e?"0 1px 24px rgba(44,29,20,.12)":"none"};return window.addEventListener("scroll",s,{passive:!0}),()=>{i.disconnect(),window.removeEventListener("scroll",s)}},[]),(0,a.jsx)("div",{ref:e,className:"minoolifediary-page-root",dangerouslySetInnerHTML:{__html:(0,t.stripHtmlComments)(s)},suppressHydrationWarning:!0})}])}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.