:root{--bg:#faf9fc;--card:#fff;--text:#292335;--muted:#70677d;--purple:#7040af;--deep:#38205e;--light:#f1eafa;--border:#e5deed;--radius:14px;--shadow:0 2px 5px #30204404,0 8px 24px #30204406}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--nav-offset,77px)}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.65;-webkit-font-smoothing:antialiased}a{color:var(--purple);text-decoration:none}a:hover{text-decoration:underline}button,input{font:inherit}button,a,input,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible,audio:focus-visible{outline:3px solid #a77bdd;outline-offset:4px}h1,h2,h3,p{margin:0}svg{display:block}sup{font-size:.65em;vertical-align:super}.container{width:min(100% - 48px,1000px);margin-inline:auto}.skip-link{position:absolute;top:-80px;left:15px;background:white;padding:12px;z-index:100}.skip-link:focus{top:15px}.hero{background:radial-gradient(ellipse at 50% -15%,#684393 0%,transparent 65%),linear-gradient(135deg,#38205e,#241634);color:white;text-align:center;padding:55px 0 0}.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:.69rem;font-weight:700;color:var(--purple);margin-bottom:10px}.hero .eyebrow{color:#d4b6f2}.hero h1{font-size:clamp(2.7rem,6vw,4rem);line-height:1.1;letter-spacing:-.045em;font-weight:750}.hero h1>.subtitle{display:block;font-size:clamp(1.1rem,2.4vw,1.65rem);line-height:1.4;letter-spacing:-.015em;font-weight:600;margin-top:16px;white-space:nowrap}.authors{color:#e4d0f8;font-size:.95rem;margin-top:27px}.authors>span{display:inline-block;margin:0 8px;color:#997aac}.affiliations{font-size:.75rem;line-height:1.7;color:#c6b6d5;margin:12px auto 0}.affiliations p>span{display:inline-block}.affiliation-separator{margin-inline:5px}.equal{font-size:.68rem;color:#bdabc9;margin-top:8px}.hero-links{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin:25px 0 30px}.button{display:inline-flex;align-items:center;gap:17px;padding:9px 17px;border-radius:8px;font-size:.8rem;font-weight:600;transition:transform .15s,background .15s}.button:hover{transform:translateY(-2px);text-decoration:none}.primary{background:#fff;color:var(--deep);border:1px solid white}.secondary{border:1px solid #ffffff35;background:#ffffff09;color:#f4eaff}.secondary:hover{background:#ffffff18}.abstract{max-width:770px;margin:auto;background:#fff;border:1px solid #e5deed;border-radius:var(--radius);padding:23px 28px;text-align:left;box-shadow:var(--shadow)}.abstract h2{font-size:.65rem;letter-spacing:.15em;text-transform:uppercase;color:var(--text);margin-bottom:8px;text-align:center}.abstract p{color:var(--text);font-size:.85rem;line-height:1.8}.stats{display:grid;grid-template-columns:repeat(3,1fr);max-width:800px;margin:28px auto 0;padding:0 0 29px}.stats>div+div{border-left:1px solid #ffffff21}.stats strong{display:block;font-size:1.8rem;line-height:1.25;font-weight:600;letter-spacing:-.025em}.stats small{font-size:.87rem;color:#d4b6f2;font-weight:500}.stats span{display:block;margin-top:6px;font-size:.67rem;color:#c6b6d5}.section-nav{position:sticky;top:0;z-index:20;background:#fffffff5;border-bottom:1px solid var(--border);backdrop-filter:blur(12px)}.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:64px}.wordmark{font-weight:750;letter-spacing:-.04em;font-size:1.2rem;color:var(--deep)}.wordmark span{font-weight:500}.nav-links{display:flex;gap:25px;align-items:center}.nav-links a{font-size:.77rem;color:var(--muted);padding:20px 0;white-space:nowrap}.nav-links a:hover,.nav-links a[aria-current]{color:var(--purple);text-decoration:none}.nav-links a[aria-current]{box-shadow:inset 0 -2px var(--purple)}.section{padding-block:60px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:12px}.section h2{font-size:clamp(1.45rem,3vw,1.85rem);line-height:1.3;letter-spacing:-.035em;font-weight:700}.tag{flex-shrink:0;background:var(--light);color:var(--purple);border:1px solid #e7d9f4;padding:5px 11px;border-radius:30px;font-size:.65rem;font-weight:600}.section-intro{font-size:.89rem;color:var(--muted);max-width:800px;line-height:1.8;margin-bottom:25px}.listening-note{display:flex;gap:13px;align-items:center;background:var(--light);border:1px solid #e7d9f4;padding:13px 18px;border-radius:10px;margin-bottom:25px}.listening-note svg{flex:0 0 22px;width:22px;height:22px;fill:none;stroke:var(--purple);stroke-width:1.6}.listening-note p{color:#68537e;font-size:.77rem}.listening-note strong{color:#593384}.toolbar{display:flex;align-items:center;gap:20px;font-size:.75rem;margin-bottom:16px;flex-wrap:wrap}.toolbar>p{margin-right:auto;color:var(--muted)}.toolbar strong{color:var(--text);font-weight:600}.checkbox-label{display:flex;align-items:center;gap:7px;color:var(--muted);cursor:pointer}input[type=checkbox]{accent-color:var(--purple);width:15px;height:15px}.text-button{border:1px solid var(--border);border-radius:7px;padding:5px 11px;background:white;font-size:.72rem;color:var(--purple)}.text-button:hover{background:var(--light)}.sample-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin-bottom:20px}.card-top{padding:16px 22px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:13px}.sample-number{display:grid;place-items:center;background:var(--light);color:var(--purple);font-size:.7rem;font-weight:650;width:33px;height:33px;border-radius:9px;flex-shrink:0}.card-top h3{font-size:.9rem;font-weight:650;line-height:1.5}.card-top p{font-size:.69rem;color:var(--muted)}.direction-tag{margin-left:auto;font-size:.7rem;color:var(--muted);text-align:right}.direction-tag strong{color:var(--text);font-weight:550}.audio-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px 22px;padding:21px 22px}.audio-item{min-width:0}.audio-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:7px;flex-wrap:wrap}.model-label{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:.7rem;padding:3px 8px;border-radius:5px;background:#f0edf4;color:#655c71}.model-label::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.model-label.ours{color:var(--purple);background:var(--light)}.model-label.reference{color:#237a66;background:#e9f5f0}.rate{font-size:.66rem;color:var(--muted);white-space:nowrap}audio{width:100%;height:36px;display:block;border-radius:20px}.audio-error{color:#a3314c;font-size:.72rem;margin-top:6px}.baseline-row{border-top:1px solid var(--border);background:#fcfbfd;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;padding:17px 22px}.hide-baselines .baseline-row{display:none}.section-footnote{font-size:.72rem;color:var(--muted);line-height:1.8;margin-top:21px;max-width:900px}.tinted{background:#f2eef7;border-block:1px solid var(--border)}.speech-text{margin:0 0 18px;padding:20px 24px;border-left:3px solid var(--purple);background:white;box-shadow:var(--shadow);border-radius:0 10px 10px 0}.small-label{font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;font-weight:650;color:var(--muted);display:block;margin-bottom:6px}.speech-text p{font-size:1rem;line-height:1.8;font-style:italic;color:#4d3c60}.experiment-note{font-size:.76rem;color:#725e40;background:#faf4e8;border:1px solid #eee0c7;border-radius:10px;padding:13px 18px;margin-bottom:24px}.speech-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.speech-card{margin:0}.speech-card .card-top{align-items:flex-start}.speech-listen{display:flex;align-items:center;padding:18px 22px;gap:20px}.compass{width:118px;height:118px;flex-shrink:0}.compass text{font-size:9px;fill:var(--muted)}.compass .ring{fill:none;stroke:#ded3e9;stroke-width:1;stroke-dasharray:3 4}.compass .cross{stroke:#ede6f2;stroke-width:1}.compass .head{fill:#806491}.compass .ray{stroke:var(--purple);stroke-width:1.5}.compass .dot{fill:var(--purple)}.speech-player{min-width:0;flex:1}.speech-player .small-label{font-size:.58rem;letter-spacing:.07em;margin-bottom:8px}.prompt-angle{color:var(--purple);font-size:.7rem;display:block;margin-top:8px;font-variant-numeric:tabular-nums}.method-diagram{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:26px;box-shadow:var(--shadow)}.method-path{display:grid;grid-template-columns:1fr 35px 1.3fr 35px 1fr;align-items:center;gap:8px;margin-bottom:14px}.method-node{border:1px solid var(--border);background:#faf9fc;border-radius:9px;padding:15px;text-align:center;min-width:0}.method-node strong{display:block;font-size:.85rem}.method-node>span:not(.small-label){display:block;font-size:.7rem;color:var(--muted);margin-top:3px}.spatial-path .method-node{background:var(--light);border-color:#e1d1ee}.spatial-path strong{color:#633895}.arrow{color:#a591b7;text-align:center;font-size:1.3rem}.decoder{display:flex;justify-content:center;align-items:center;gap:20px;border-top:1px solid var(--border);padding:22px 0 0;margin-top:22px;font-size:.8rem}.decoder>span:first-child{font-size:.72rem;color:var(--muted)}.decoder>strong{color:var(--purple)}.decoder small{display:block;font-size:.65rem;font-weight:500;color:var(--muted);text-align:center}.method-notes{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:25px}.method-notes p{font-size:.77rem;color:var(--muted);line-height:1.8}.method-notes strong{display:block;color:var(--text);font-weight:600;margin-bottom:5px}.no-script{padding:25px;color:#a3314c}footer{text-align:center;padding:38px 0 42px;background:white}footer p{font-size:.73rem;color:var(--muted);margin-top:6px}footer .container>div{display:flex;justify-content:center;gap:25px;font-size:.7rem;margin-top:16px}
@media(min-width:1300px){.container{max-width:1040px}}
@media(max-width:760px){.container{width:calc(100% - 32px)}.nav-inner{display:block;padding-top:10px;min-height:0}.nav-inner>.wordmark{display:none}.nav-links{justify-content:space-between;gap:12px}.nav-links a{font-size:.7rem;padding:8px 0 14px}.section{padding-block:40px}.section-heading{align-items:flex-start;flex-direction:column;gap:10px}.section-intro{font-size:.84rem}.hero{padding-top:38px}.hero h1>.subtitle{white-space:normal}.authors{font-size:.82rem}.authors>span{margin:0 4px}.affiliations{font-size:.65rem}.abstract{padding:18px 20px}.abstract p{font-size:.79rem}.stats strong{font-size:1.4rem}.stats small{font-size:.72rem}.stats span{font-size:.6rem;padding-inline:6px}.baseline-row{grid-template-columns:1fr}.speech-grid{grid-template-columns:1fr}.method-notes{grid-template-columns:1fr;gap:15px}.decoder{flex-wrap:wrap;gap:12px}.method-node{padding:12px 7px}.method-node strong{font-size:.72rem}.method-node .small-label{font-size:.52rem}.method-path{grid-template-columns:1fr 15px 1.3fr 15px 1fr;gap:5px}.method-diagram{padding:16px}.method-node>span:not(.small-label){font-size:.62rem}}
@media(max-width:460px){.audio-grid{grid-template-columns:1fr;gap:17px}.card-top{padding:14px 16px;flex-wrap:wrap}.direction-tag{font-size:.64rem}.card-top h3{font-size:.82rem}.audio-grid,.baseline-row{padding:17px 16px}.toolbar{gap:12px}.toolbar>p{width:100%;margin-bottom:0}.hero-links{gap:8px}.button{font-size:.7rem;padding:8px 12px;gap:8px}.speech-listen{padding:17px 16px;gap:14px}.compass{width:105px;height:105px}.stats span{font-size:.56rem}.section h2{font-size:1.45rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}

/* Source release status and source-direction views. */
.release-pending { flex-wrap: wrap; justify-content: center; gap: 10px; }
.release-status { font-size: .62rem; font-weight: 500; color: #e2c9f7; background: #ffffff10; border-radius: 4px; padding: 2px 6px; }
.release-pending:hover { transform: none; background: #ffffff09; }
.footer-release { color: var(--muted); }
.footer-release > span { font-size: .65rem; }
.reconstruction-listen { display: grid; grid-template-columns: 175px minmax(0, 1fr); align-items: center; }
.target-direction { margin: 18px 0 18px 22px; padding-right: 22px; border-right: 1px solid var(--border); display: flex; flex-direction: column; align-items: center; text-align: center; }
.target-direction .compass { width: 115px; height: 115px; }
.target-direction figcaption { margin-top: 10px; }
.target-direction .small-label { margin-bottom: 0; font-size: .58rem; }
.target-direction strong { display: block; color: var(--purple); font-size: 1rem; font-variant-numeric: tabular-nums; }
.target-view { display: block; font-size: .6rem; color: var(--muted); }
.compass .nose { fill: #806491; }
@media (max-width: 760px) {
  .reconstruction-listen { grid-template-columns: 145px minmax(0, 1fr); }
  .reconstruction-listen .audio-grid { grid-template-columns: 1fr; }
  .target-direction { margin-left: 16px; padding-right: 16px; }
  footer .container > div { flex-wrap: wrap; gap: 10px 20px; }
}
@media (max-width: 460px) {
  .reconstruction-listen { grid-template-columns: 1fr; }
  .target-direction { flex-direction: row; justify-content: center; gap: 20px; margin: 0 16px; padding: 14px 0; border-right: 0; border-bottom: 1px solid var(--border); }
  .target-direction figcaption { margin-top: 0; text-align: left; }
}

.paper-pending:disabled { cursor: default; color: #d4c3e3; background: #ffffff0c; border-color: #ffffff26; }
.paper-pending:disabled:hover { transform: none; }
.paper-status { font-size: .62rem; font-weight: 500; }

/* Consistent FOA + dapter typography throughout the visible site. */
.brand-name { font-weight: 400; white-space: nowrap; }
.brand-name > strong { display: inline; font-size: inherit; line-height: inherit; letter-spacing: inherit; font-weight: 750; }
.stats .brand-name { display: inline; margin: 0; padding: 0; font-size: inherit; color: inherit; }

.ood-tag { background: var(--purple); border-color: var(--purple); color: white; }
.ood-comparison { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 24px; margin: 0 0 24px; padding: 22px 24px; border: 1px solid #d6c1eb; border-radius: var(--radius); background: #fff; }
.ood-comparison strong { display: block; font-size: .9rem; }
.ood-comparison p { font-size: .73rem; color: var(--muted); margin-top: 4px; }
.ood-comparison > div:last-child strong, .ood-comparison > div:last-child .small-label { color: var(--purple); }
.ood-arrow { color: var(--purple); font-size: 1.6rem; }
@media (max-width: 600px) {
  .ood-comparison { grid-template-columns: 1fr; gap: 10px; padding: 20px; }
  .ood-arrow { transform: rotate(90deg); justify-self: start; line-height: 1; }
  .ood-tag { white-space: normal; }
}

.listening-copy { min-width: 0; }
.listening-note .hrtf-reference { margin-top: 9px; font-size: .7rem; line-height: 1.7; }
.hrtf-reference a { text-decoration: underline; text-underline-offset: 2px; }

.speech-color { color: #b33249; }
.spatial-color { color: #235fad; }
.combined-color { color: var(--purple); }
.swap-explanation { border: 1px solid var(--border); border-radius: 10px; padding: 16px 20px; margin-bottom: 24px; background: linear-gradient(110deg, #fff3f4, #f2f7ff 55%, #f3ecfc); }
.swap-explanation > p:last-child { font-size: .76rem; color: var(--muted); margin-top: 8px; }
.swap-equation { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; font-size: .86rem; }
.swap-equation > span { color: var(--muted); }
.swap-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--border); }
.swap-panel { --swap-accent: var(--purple); --swap-tint: var(--light); min-width: 0; padding: 20px 22px; border-top: 3px solid var(--swap-accent); background: #f8f3fd; }
.swap-speech { --swap-accent: #b33249; --swap-tint: #fbe6e9; background: #fff8f8; }
.swap-spatial { --swap-accent: #235fad; --swap-tint: #e5effc; background: #f5f9ff; }
.swap-panel h4 { margin: 0; font-size: .9rem; color: var(--swap-accent); }
.swap-description { font-size: .73rem; color: var(--muted); margin-top: 3px; }
.swap-result { border-top-color: var(--purple); }
.swap-panel .model-label { color: var(--swap-accent); background: var(--swap-tint); }
.swap-direction { display: flex; align-items: center; justify-content: center; gap: 16px; margin: 14px 0; }
.swap-direction .compass { width: 100px; height: 100px; }
.swap-direction strong { color: var(--swap-accent); font-size: 1.1rem; }
.swap-panel .compass .ray { stroke: var(--swap-accent); }
.swap-panel .compass .dot { fill: var(--swap-accent); }
#swap { border-top: 1px solid var(--border); }
@media (max-width: 900px) and (min-width: 601px) {
  .swap-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .swap-result { grid-column: 1 / -1; }
  .swap-result .audio-item { max-width: 420px; margin-inline: auto; }
  .swap-result h4, .swap-result .swap-description { text-align: center; }
}
@media (max-width: 760px) {
  .nav-links { overflow-x: auto; justify-content: flex-start; gap: 20px; }
}
@media (max-width: 600px) {
  .swap-grid { grid-template-columns: 1fr; }
  .swap-panel { padding: 18px 16px; }
}

.method-figure { margin: 0; padding: 18px; background: white; border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.method-figure > a { display: block; border-radius: 5px; }
.method-figure img { display: block; width: 100%; height: auto; }
.method-figure figcaption { margin-top: 12px; text-align: right; font-size: .72rem; }
@media (max-width: 760px) {
  .method-figure { padding: 10px; }
}

.baseline-heading { grid-column: 1 / -1; margin: 0; font-size: .72rem; font-weight: 650; color: var(--muted); text-align: left; }

/* Table of contents. */
.toc-section { padding: 38px 0 42px; background: #fff; }
.toc-section .eyebrow { margin-bottom: 4px; }
.toc-section h2 { font-size: 1.35rem; line-height: 1.3; letter-spacing: -.025em; }
.toc-list { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin-top: 20px; }
.toc-list a { min-width: 0; padding: 15px 16px; border: 1px solid var(--border); border-radius: 10px; background: #fcfbfd; color: var(--text); transition: border-color .15s, background .15s, transform .15s; }
.toc-list a:hover { border-color: #cdb8e2; background: var(--light); text-decoration: none; transform: translateY(-2px); }
.toc-list a > span { display: block; margin-bottom: 9px; color: var(--purple); font-size: .63rem; font-weight: 700; letter-spacing: .12em; }
.toc-list strong { display: block; font-size: .75rem; line-height: 1.45; font-weight: 650; }
.toc-list small { display: block; margin-top: 5px; color: var(--muted); font-size: .6rem; line-height: 1.5; }
@media (max-width: 760px) {
  .toc-section { padding: 30px 0 34px; }
  .toc-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 460px) {
  .toc-list { grid-template-columns: 1fr; gap: 8px; }
  .toc-list a { display: grid; grid-template-columns: 30px 1fr; column-gap: 8px; padding: 12px 14px; }
  .toc-list a > span { grid-row: 1 / 3; margin: 1px 0 0; }
  .toc-list small { margin-top: 2px; }
}

/* Hero summary and release actions. */
.hero .container { padding-bottom: 32px; }
.abstract { max-width: 760px; padding: 18px 30px 22px; background: #ffffff08; border-color: #ffffff1c; box-shadow: none; }
.abstract p { color: #ded2e9; text-align: center; font-size: .75rem; white-space: nowrap; }
.abstract .stats { width: 100%; max-width: none; margin: 18px 0 0; padding: 18px 12px 0; border-top: 1px solid #ffffff1c; text-align: center; }
.abstract .stats > div { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; min-width: 0; }
.abstract .stats > div + div { border-left-color: #ffffff1c; }
.abstract .stats strong { color: #fff; }
.hero-links { gap: 12px; }
.release-button { min-width: 150px; justify-content: center; gap: 9px; padding: 9px 16px; border: 1px solid #ffffff2e; border-radius: 999px; background: #ffffff14; color: #fff; font-size: .82rem; font-weight: 550; box-shadow: inset 0 1px 0 #ffffff12, 0 6px 18px #160b2526; cursor: default; }
.release-button:hover { transform: none; text-decoration: none; background: #ffffff14; }
.release-button svg { width: 19px; height: 19px; flex: 0 0 19px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.release-button .arxiv-icon { width: 19px; height: 22px; flex: 0 0 19px; object-fit: contain; }
.release-button:nth-child(2) svg { fill: currentColor; stroke: none; }
.release-button-copy { display: flex; flex-direction: column; align-items: center; line-height: 1.05; }
.release-button-copy small { margin-top: 3px; color: #d4b6f2; font-size: .56rem; font-weight: 550; }
@media (max-width: 760px) {
  .hero .container { padding-bottom: 24px; }
  .abstract { padding: 16px 20px 19px; }
  .abstract p { font-size: .78rem; white-space: normal; }
  .abstract .stats { margin-top: 15px; padding: 15px 0 0; }
  .tldr-break { display: none; }
}
@media (max-width: 460px) {
  .abstract { padding: 14px 12px 16px; }
  .abstract .stats { gap: 0; }
  .release-button { min-width: 0; padding: 8px 14px; font-size: .74rem; }
  .release-button svg { width: 17px; height: 17px; flex-basis: 17px; }
  .release-button .arxiv-icon { width: 17px; height: 20px; flex-basis: 17px; }
}
